android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window com.android.

android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41331978 V.E..... R.....I. 0,0-480,226} that was originally added here

在通过dialog上的按钮跳转到另外一个activity时要关闭dialog(dialog.dismiss());


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)了。

猜你喜欢

转载自blog.csdn.net/niuba123456/article/details/48047797