Android窗体泄露问题

最近遇到这样一个问题:

E/WindowManager (30314): android.view。WindowLeaked:活动com.xxxxxx.www.activity.XXXActivity泄露窗口com.android.internal.policy.impl.PhoneWindow $ DecorView {52 b0f3ac方法.....R……D 0, 0 - 120, 95},这里添加了最初的;


这是一个窗体泄露的异常,普遍的解决方案是令窗体(对话框或者popupwindow)把()在activity.finish()之前,这样的思路是正确的的,但是并不是很全面,有时候会发现即使你的代码里面把窗体先关闭了,依然会出现这个问题,今天在堆栈溢出上面找到一个比较全面的答案这里分享给大家,先上链接http://stackoverflow.com/questions/2850573/activity-has-leaked-window-that-was-originally-added


这里提供了3个答案分别对应三种情况,第一种如上所说,窗体关闭在活动关闭之后,第二种情况其实跟第一种的原因是一样的,但是导致活动关闭的原因并不是我们主动关闭活动,而是捕获到了异常导致了活动提前关闭,然后当我们去调用窗体展示的时候然出现了这个异常,所以真正需要我们去解决的其实是比这个窗体泄露异常更早出现的异常(ps:这次我就是倒在了这里,完全没注意到更早打印的错误日志……——!)第三种情况我还没遇到过就不说了。



本文只是记录开发中遇到花了比较多时间不容易发现的问题。马克



Android窗体泄露问题