Android 中 android.view.WindowLeaked的解决办法
程序员文章站
2023-12-05 22:15:28
android 中 android.view.windowleaked的解决办法
按字面了解,window leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏...
android 中 android.view.windowleaked的解决办法
按字面了解,window leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢?
产生原因:
我们知道android的每一个activity都有个windowmanager窗体管理器,同样,构建在某个activity之上的对话框、popupwindow也有相应的windowmanager窗体管理器。因为对话框、popupwindown不能脱离activity而单独存在着,所以当某个dialog或者某个popupwindow正在显示的时候我们去finish()了承载该dialog(或popupwindow)的activity时,就会抛window leaked异常了,因为这个dialog(或popupwindow)的windowmanager已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。
解决方法:
关闭(finish)某个activity前,要确保附属在上面的dialog或popupwindow已经关闭(dismiss)了。
比如:
@override protected void ondestroy() { super.ondestroy(); if (mdialog != null) { mdialog.dismiss(); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
推荐阅读