bug_ _java.lang.IllegalArgumentException: View not attached to window manager 2
今天遇到一个很奇特的问题,当用户设置了PIN码,在锁屏界面正常解锁PIN码后,进入Launcher时显示com.android.phone 已停止运行。一开始猜想会不会是解锁PIN码的时候处理导致了Phone进程报错,通过log分析找到了问题的大概原因:
- AndroidRuntime: java.lang.IllegalArgumentException: View not attached to window manager
- AndroidRuntime: at com.android.stk.StkDialogActivity$4.onClick(StkDialogActivity.java:188)
这是开机识别到SIM卡之后弹出的STK对话框。那为什么会报com.android.phone已停止运行呢?
经过以上分析,我们可以大致猜测是因为STK引起的问题,既然是STK的问题那为什么会报phone的错误呢?如果是phone的错误那么从log中应该可以检索到phone相关的问题,为什么没有呢?那么我们接下来一一解答这些问题。
(1). 为什么报错com.android.phone已停止运行?
(2). 为什么会报View not attached to window manager错误?
(3). 为什么STKDialogActivity会被"杀掉"?
- onCreate
- onResume - mbSendResp[false], sim id: 0
- ... ...省略部分
- onSaveInstanceState
- onPause, sim id: 0
- ... ...省略部分
- onDestroy-
- onCreate
- ... ...省略部分
- onRestoreInstanceState - [com.android.internal.telephony.cat.TextMessage@41fe7d80]
- onResume - mbSendResp[false], sim id: 0
(4). 在STKDialogActivity被杀掉时,Dialog存在么?
- WindowManager: Activity com.android.stk.StkDialogActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41fea228 V.E..... R.....ID 0,0-1026,433} that was originally added here
- WindowManager: android.view.WindowLeaked: Activity com.android.stk.StkDialogActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41fea228 V.E..... R.....ID 0,0-1026,433} that was originally added here
- WindowManager: at android.view.ViewRootImpl.<init>(ViewRootImpl.java:409)
- WindowManager: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:218)
- WindowManager: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
- WindowManager: at android.app.Dialog.show(Dialog.java:281)
- WindowManager: at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
- WindowManager: at com.android.stk.StkDialogActivity.onCreate(StkDialogActivity.java:192)
- WindowManager: at android.app.Activity.performCreate(Activity.java:5122)
- WindowManager: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
- WindowManager: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
- WindowManager: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
- WindowManager: at android.app.ActivityThread.access$600(ActivityThread.java:156)
这里的WindowManager报错是什么意思呢?这段log是WindowManager抛出的error错误,当我们的Dialog还没有dismiss时,如果此时该Activity被销毁了,那么就会出现以上错误,提示窗口泄漏(leaked window)。这里自己也做了一个实验,写一个demo,在Activity的onCreate方法中显示一个Dialog,然后直接调用finish方法。代码大致如下:
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- AlertDialog.Builder info = new Builder(this);
- info.setTitle("Dialog").setPositiveButton("OK", null).setMessage("This is a Dialog");;
- info.show();
- finish();
- }
直接将此程序run到模拟器或者真机上,查看log我们就能看到leaked window的报错信息。因此这也证明了前面我们的假设,即StkActivity在被销毁时,其所依附的Dialog是存在的。
(5). 如何解决这个问题呢?
1. 使用Activity自带的Dialog控制方法
2. 限制Dialog的生命周期
bug_ _java.lang.IllegalArgumentException: View not attached to window manager 2的更多相关文章
- bug_ _java.lang.IllegalArgumentException: View not attached to window manager
============= 1 view not attached to window manager 转自:http://hi.baidu.com/spare_h/blog/item/7fa3e ...
- 关于java.lang.IllegalArgumentException: View not attached to window manager 错误的分析
今天遇到一个很奇特的问题,当用户设置了PIN码,在锁屏界面正常解锁PIN码后,进入Launcher时显示com.android.phone 已停止运行.一开始猜想会不会是解锁PIN码的时候处理导致了P ...
- java.lang.IllegalArgumentException: View not attached to window manager
公司项目线上bug: java.lang.IllegalArgumentException: View not attached to window manager at android.view.W ...
- decorview that was originally added here or java.lang.IllegalArgumentException: View not attached to window manager
使用Dialog的时候,没少出现下面这两个报错 12-11 17:47:49.776: E/WindowManager(11461): android.view.WindowLeaked: Activ ...
- Android中 View not attached to window manager错误的解决办法
前几日出现这样一个Bug是一个RuntimeException,详细信息是这样子的:java.lang.IllegalArgumentException: View not attached to w ...
- View not attached to window manager
java.lang.IllegalArgumentException: View not attached to window manager 在用ProgressDialog的时候,任务结束后Dis ...
- View not attached to window manager crash 的解决办法
View not attached to window manager crash 的解决办法 转自:http://stackoverflow.com/questions/22924825/view- ...
- 关于dialog引起的 java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView not attached to window manager 错误的分析
在跑Monkey测试的时候出现了一个比较特别的问题,先来看看Log: // CRASH: com.meizu.media.painter (pid 12491) // Short Msg: java. ...
- view not attached to windows manager与This Toast was not created with Toast.makeText()
http://blog.sina.com.cn/s/blog_474928c90100x871.html public class Ex04_1Activity extends Activ ...
随机推荐
- 为什么你应该试试用Sublog写博客
HI 这篇文章发布后,收到了一些反馈,在不同的阅读媒体上(浏览器,RSS,evernote)等,会有样式兼容问题,特别是之前的代码显示行号的实现方式,使用浮动code块,兼容问题比较严重,所以做了一个 ...
- oracle组件
目前在用的四个oracle版本 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Parti ...
- linux服务之rsync
http://www.cnblogs.com/itech/archive/2010/06/13/1757952.html rsync与mfs好像有点类似,都是传输块的chunk,chunk的 1)软件 ...
- OpenJudge计算概论-校门外的树
/*======================================================================== 校门外的树 总时间限制: 1000ms 内存限制: ...
- Mozilla Brick:一个Web组件Polyfill库
Web组件是一个W3C规范,它旨在使Web开发人员能够定义具有非常丰富的视觉效果和高可交互性且易于组合的小组件.Brick库提供了新的自定义HTML标签,从而抽象了用户常用接口模式.在浏览器本身支持类 ...
- 【转】c# winform 打包部署 自定义界面 或设置开机启动
方法一: 创建安装部署这部分就不用说了,添加安装部署项目后,鼠标右键安装项目->视图->注册表, 要使软件在开机就运行,可以在HKEY_CURRENT_USER\Software\Micr ...
- python selenium下载电子书
妹纸推荐书籍<御伽草纸>,网上找了很久都找不到下载,估计是被Amazon版权了,但是在网易云阅读看到有书,所以就写个代码下载下来. 由于网易云阅读是js加载,用requests或者下载ht ...
- 最长公共字串(LCS)最长连续公共字串(LCCS)
链接1:http://blog.csdn.net/x_xiaoge/article/details/7376220 链接2:http://blog.csdn.net/x_xiaoge/article/ ...
- HTTP状态码对照表 HTTP response codes
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求. ...
- Jfinal中定时器的初步探索(二)
第一篇中增加的是程序代码的实现,本篇我们将通过配置文件进行定时器的配置,减少代码量,提高灵活性. 1.需要用到的文件:quartz.properties,据说这个文件如果没有的话,按默认的走,结果布署 ...