您的位置:首页 > 其它

使用Dialog出现的has leaked window和not attached to window manager

2016-07-28 17:43 363 查看

1、Activity关键代码:



2、错误和异常信息:



3、说明:

has leaked window(窗体泄漏):dialog.show();finish();注意这两行代码,当弹窗显示在屏幕中,Activity却被销毁了(就是没有在Activity销毁之前及时调用dialog.dismiss)。该错误不会导致应用崩溃。

not attached to window manager:注意看代码,子线程睡眠1秒后调用了dialog.dismiss。当发生窗体泄漏过后,再调用dialog.dismiss时就会出现该异常。

4、解决办法:

DialogFragment:

用DialogFragment代替,不直接使用Dialog。

非要直接使用Dialog的话:

1:在Activity生命周期onDestroy里加上dialog.dismiss()。

2:或者在Dialog.dismiss方法里加上判断(窗体泄漏依然存在)

@Override

public void dismiss() {

        if (activityIsFinish()) return;

super.dismiss();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: