java.lang.IllegalArgumentException: View=DecorView not attached to window manager(Android Dialog崩溃)
监控报警,Dialog偶现Crash。日志如下:
java.lang.IllegalArgumentException: View=DecorView@9d9a86 not attached to window managerat android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:619)at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:511)at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:200)at android.app.Dialog.dismissDialog(Dialog.java:766)at android.app.Dialog.dismiss(Dialog.java:746)
对应代码如下:
private void doNetWork() {showLoading();//网络请求...hideLoading();
}private void showLoading() {if (loadingDialog == null) {loadingDialog = new LoadingDialog(this);}loadingDialog.show();
}private void hideLoading() {if (loadingDialog != null) {loadingDialog.dismiss();}
}
初步分析:dialog在diss时发现无可依附window,原因可能为异步网络请求返回时此Activity已经finish。
初步方案是:isShowLoading里有判断window所依赖的View是否为null,加上试试。
/*** @return Whether the dialog is currently showing.*/
public boolean isShowing() {return mDecor == null ? false : mDecor.getVisibility() == View.VISIBLE;
}
private void doNetWork() {showLoading();//网络请求inghideLoading();
}//....
private void hideLoading() {if (loadingDialog != null && loadingDialog.isShowing()) {loadingDialog.dismiss();}
}
为了mock还原场景,执行了如下代码,发现依然有“not attached to window manager”的日志报错。
private void doNetWork() {showLoading();finish();//网络请求inghideLoading();
}
需要判断当前依附Activity是否存在,最终优化代码如下:
private void hideLoading() {if (loadingDialog != null && loadingDialog.isShowing() && isValidActivity()) {loadingDialog.dismiss();}
}private boolean isValidActivity() {if (!isDestroyed() && !isFinishing()) {return true;}return false;
}
java.lang.IllegalArgumentException: View=DecorView not attached to window manager(Android Dialog崩溃)相关推荐
- not attached to window manager问题解决
关于出现这个问题,一般是因为Activity已经在finish了,但是还在dialog.show(),或者dialog.dismiss().导致window manager无法管理dialog.解决办 ...
- android——fragment长时间home或者锁屏java.lang.IllegalArgumentException:No view found for id for.......
在项目中遇到了这个问题.头痛了很久,总是无法重现,也不能很好的解决.总是在息屏后一段时间,就会报java.lang.IllegalArgumentException:No view found for ...
- java.lang.IllegalArgumentException: parameter must be a descendant of this view
Log信息 java.lang.IllegalArgumentException: parameter must be a descendant of this viewat android.view ...
- android 多个fragment切换报错Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0800f
主界面一般来说都是底部几个按钮,点击按钮可切换不同页面.一般来说我们是用fragment来实现的.给按钮设置监听事件,监听到点击按钮时候 展示对应fragmnt,而实现fragment方式有两种,一种 ...
- Android异常之#8002 java.lang.IllegalArgumentException
欢迎关注WX公众号: Android开发中如果出现IllegalArgumentException问题,报错如下 # main(1)java.lang.IllegalArgumentException ...
- Android报错:java.lang.IllegalArgumentException: Surface was abandoned
背景情况 使用Camera2 Api 直接报错 报错如下: java.lang.IllegalArgumentException: Surface was abandonedat android.ha ...
- java.lang.IllegalArgumentException: pointerIndex out of range
在使用ViewPager展示图片的时候,使用了PhotoView对ImageView进行多点触控放大缩小,出现了java.lang.IllegalArgumentException: pointerI ...
- java.lang.IllegalArgumentException: Can't find a no-arg constructor for class com.xiayiye.takeout.mo
直接上错误日志: 2020-03-11 18:20:16.647 15661-15661/com.xiayiye.takeout W/System.err: java.lang.IllegalArgu ...
- java.lang.IllegalArgumentException: No converter found for return value of type: class com.sail.comm
目录 1.背景 2.测试环境 3.分析原因及解决 1.背景 自己使用IDEA的maven搭建一套Spring+SpringMVC+Mybatis+Mysql的环境,结果运行程序时,适用@Respons ...
最新文章
- lstm 和自注意力机制 bert 本质区别的思考历程
- Mallet机器语言工具包-入门测试
- 安装Termux的手机上运行Python
- OSGI –模块化您的应用程序
- 关于网站注册账号时提示Server 对象 错误 'ASP 0177 : 800401f3'
- 如何使用计算机远程关闭手机软件,如何用手机远程控制电脑关机
- 应用 1:千帆竞发 ——分布式锁
- 不重启Windows使环境变量快速生效
- 歌曲:后来的我们 歌手:品冠
- ARM 搭建开源NAS平台
- 学习,只有勤奋是不够的……
- Qtablewidget设置某一列不可编辑
- SQL server 变量、运算符
- ArcGIS合并shp文件及单个shp文件中的相邻斑块
- Python基础_10( 判断(if)语句)
- Ubuntu 安装一款常用的图像编辑软件
- python毕业设计作品基于django框架校园网站系统毕设成品(4)开题报告
- 看透HiPiHi,不再是游戏
- HDU - 2153 仙人球的残影
- 小米官网设计php分析,小米网秒杀系统设计经验与问题解析.ppt