欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 中 android.view.WindowLeaked的解决办法

程序员文章站 2023-11-21 08:15:34
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();
    }
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!