has leaked window com.android.internal.policy.impl.PhoneWindow解决(Dialog.cancel、dismiss、hide区别)
项目中有个Activity中用到了ProgressDialog,而在跳转到下个Activity时就会报这个错:
has leaked window com.android.internal.policy.impl.PhoneWindow$ that was originally added here
之前还没注意这个错误,看字面意思是泄露了窗口,什么意思呢?
原来,在初始化时有:
mProgressDialog = new ProgressDialog(this);
而由ProgressDialog的构造函数可以看到,传入的是一个Context,dialog可以看做引用了当前Context
public ProgressDialog(Context context) {
super(context);
initFormats();
}
这样就可以理解为什么跳转时会提示这个错误了,我在finish当前Activity时没有将dialog置为null,导致那个Activity一直被引用,GC不能及时回收,这就是泄露。
知道原因后就好做了,在onDestroy中调用:
if(mProgressDialog != null && mProgressDialog.isShowing()){
//mProgressDialog.hide();
mProgressDialog.dismiss();
mProgressDialog = null;
}
看来,让dialog消失有好几种方法: hide、cancel、dismiss,有什么区别呢?
dismiss方法会释放对话框所占的资源,而hide方法不会。activity退出前必须调用dismiss方法关闭对话框。所以,最正确的调用方法是,在activity的onDestory方法里调用dismiss方法,其他地方都用hide方法隐藏对话框。
(来自:http://blog.csdn.net/leeo1010/article/details/36420927)
而cancel其实是在调用dismiss之前执行注册OnCancelListener的事件,如果注册了的话。
现在问题清楚了,就是如果你在创建AlertDialog的时候调用了setOnCancelListener 这个mCancelMessage变量有作用,否则dismiss和cancel等同。
(来自:http://luren85.iteye.com/blog/975131)
has leaked window com.android.internal.policy.impl.PhoneWindow解决(Dialog.cancel、dismiss、hide区别)相关推荐
- 异常:Activity has leaked window com.android.internal.policy.impl.PhoneWindow
其意思大概就是:窗体已经关闭了但是dialog仍然在显示,Activity has leaked window(activity渗透出窗体),大概就是这个意思. 那么就要在activity finis ...
- android.view.WindowLeaked: Activity has leaked window com.android.internal.p
android.view.WindowLeaked: Activity has leaked window com.android.internal.policy.impl.PhoneWindow$ ...
- activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.p
其意思大概就是:窗体已经关闭了但是dialog仍然在显示,Activity has leaked window(activity渗透出窗体),大概就是这个意思. 那么就要在activity finis ...
- android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window com.android.
android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window com.android. ...
- E/WindowManager: android.view.WindowLeaked: Activity com.xxx.xxx.xxx has leaked window com.android.i
今天运行代码,程序没有崩溃,并遇到以下错误提示: E/WindowManager: android.view.WindowLeaked:Activity com.xxx.xxx.xxx has lea ...
- Android问题集锦之二十 Activity has leaked window that was originall
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 今天调试 ...
- android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window
android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window com.android. ...
- Activity has leaked window that was originally added
错误: E/WindowManager: android.view.WindowLeaked: Activity com.x.x.x has leaked window com.android.int ...
- 【已解决】Activity MainActivity has leaked window PhoneWindow$DecorView@ that was originally added here
今天写Sqlite Demo时,发生如下错误: Activity me.dengfengdecao.android.savedatademo.MainActivity has leaked windo ...
最新文章
- 【iOS开展-94】xcode6如何使用GIT以及如何添加太老项目GIT特征?
- 自由自在公司冰淇淋甜美的健康文化
- OpenCASCADE:使用 扩展数据交换XDE之形状和组件
- ASP.NET中常用的三十三种代码
- mysql 大写 小写_MySQL大小写问题
- Matlab非线性拟合工具箱cftool
- 计算机绘制轴类零件图,轴类零件工序图自动绘制的方法和系统研究
- Windows API——FindFirstFile——查找文件
- 好的物联网开源框架_通过开源文化实现更好的物联网
- process is bad
- [推荐]WebService开发知识介绍
- 计算机入门建模观后感,实习生revit学习心得-初学Revit有感
- 妲己机器人功能_来自机器人影响者的5个功能强大的Instagram教训
- ArcGIS中相对高程的提取
- 暗黑 pvpgn mysql 架设_暗黑破坏神2战网架设图文教程
- Java项目中利用Freemarker模板引擎导出--生成Word文档
- 学生key申请方式~获取微软正版序列号!
- SaaS巨头总市值破万亿美元 独立云服务商萨摩耶云打开想象空间
- 布尔表达式、条件判断
- 数学中的向量相关知识
热门文章
- C# WebSocket(Fleck) 客户端:html Winfrom
- cmd中通过winsat命令测试硬盘、CPU、内存、3d性能等
- 将门CTO沈强:人工智能时代,技术创新将全面引爆商业变革
- vite如何兼容低版本浏览器
- flyingsaucer进行html文件转图片和pdf
- 详解SQL中Groupings Sets 语句的功能和底层实现逻辑
- Excel表格快速复制公式到最后一行,无需拖拽!
- 好莱坞大片! 为躲避死亡威胁, 只用15步, 这个密码朋克大叔就从世界消失了......
- 中国总部经济园市场发展策略分析及市场十四五前景展望报告2022-2028年版
- 为什么日本是世界上少有的“100V电压国家”,并且就连国内都不能统一供电频率?