项目中有个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区别)相关推荐

  1. 异常:Activity has leaked window com.android.internal.policy.impl.PhoneWindow

    其意思大概就是:窗体已经关闭了但是dialog仍然在显示,Activity has leaked window(activity渗透出窗体),大概就是这个意思. 那么就要在activity finis ...

  2. android.view.WindowLeaked: Activity has leaked window com.android.internal.p

    android.view.WindowLeaked: Activity  has leaked window com.android.internal.policy.impl.PhoneWindow$ ...

  3. activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.p

    其意思大概就是:窗体已经关闭了但是dialog仍然在显示,Activity has leaked window(activity渗透出窗体),大概就是这个意思. 那么就要在activity finis ...

  4. 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. ...

  5. 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 ...

  6. Android问题集锦之二十 Activity has leaked window that was originall

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 今天调试 ...

  7. android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window

    android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window com.android. ...

  8. Activity has leaked window that was originally added

    错误: E/WindowManager: android.view.WindowLeaked: Activity com.x.x.x has leaked window com.android.int ...

  9. 【已解决】Activity MainActivity has leaked window PhoneWindow$DecorView@ that was originally added here

    今天写Sqlite Demo时,发生如下错误: Activity me.dengfengdecao.android.savedatademo.MainActivity has leaked windo ...

最新文章

  1. 【iOS开展-94】xcode6如何使用GIT以及如何添加太老项目GIT特征?
  2. 自由自在公司冰淇淋甜美的健康文化
  3. OpenCASCADE:使用 扩展数据交换XDE之形状和组件
  4. ASP.NET中常用的三十三种代码
  5. mysql 大写 小写_MySQL大小写问题
  6. Matlab非线性拟合工具箱cftool
  7. 计算机绘制轴类零件图,轴类零件工序图自动绘制的方法和系统研究
  8. Windows API——FindFirstFile——查找文件
  9. 好的物联网开源框架_通过开源文化实现更好的物联网
  10. process is bad
  11. [推荐]WebService开发知识介绍
  12. 计算机入门建模观后感,实习生revit学习心得-初学Revit有感
  13. 妲己机器人功能_来自机器人影响者的5个功能强大的Instagram教训
  14. ArcGIS中相对高程的提取
  15. 暗黑 pvpgn mysql 架设_暗黑破坏神2战网架设图文教程
  16. Java项目中利用Freemarker模板引擎导出--生成Word文档
  17. 学生key申请方式~获取微软正版序列号!
  18. SaaS巨头总市值破万亿美元 独立云服务商萨摩耶云打开想象空间
  19. 布尔表达式、条件判断
  20. 数学中的向量相关知识

热门文章

  1. C# WebSocket(Fleck) 客户端:html Winfrom
  2. cmd中通过winsat命令测试硬盘、CPU、内存、3d性能等
  3. 将门CTO沈强:人工智能时代,技术创新将全面引爆商业变革
  4. vite如何兼容低版本浏览器
  5. flyingsaucer进行html文件转图片和pdf
  6. 详解SQL中Groupings Sets 语句的功能和底层实现逻辑
  7. Excel表格快速复制公式到最后一行,无需拖拽!
  8. 好莱坞大片! 为躲避死亡威胁, 只用15步, 这个密码朋克大叔就从世界消失了......
  9. 中国总部经济园市场发展策略分析及市场十四五前景展望报告2022-2028年版
  10. 为什么日本是世界上少有的“100V电压国家”,并且就连国内都不能统一供电频率?