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();
}