窗体泄漏
最近新发布的版本中出现了 Crash,看 log 中是 Window Leaked,下面提供一下解决方案
原因
关于窗体泄漏的原因很简单。当我们在 Activity 上去构建一个置于 Activity 之上的 Dialog 或者 PopupWindow 时,这个窗口会依赖于 Activity。如果在浮窗没有被 dismiss 时,Activity 被 finish,就会出现 Window Leaked。知道了问题原因,就很好解决了。
解决方案
共有两种解决思路,第一种是手动做一个判断处理。第二种是使用 onCreateDialog 方法让系统去管理。
手动处理
手动处理也很方便,就是我们对它做一个判断就可以了。
@Override
protected void onDestroy() {
super.onDestroy();
// 处理内存泄漏中的窗体泄漏问题,即:位于Activity之上的窗体依附于Activity展示(如Dialog、Popup等),在它们还在时,依附的Activity没了引起
if (progressDialog != null) {
progressDialog.dismiss();
}
}
复制代码
系统管理
在 Activity 中重写 onCreateDialog 方法,通过该方法让系统对其管理
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = new Dialog(this);
return dialog;
}
复制代码
这里简单记录一下问题处理
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


















![[02/27][官改] Simplicity@MIX2 ROM更新-一一网](https://www.proyy.com/wp-content/uploads/2020/02/3168457341.jpg)


![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)