天天看點

android.view.WindowLeaked的解決方案

無意中發現windowleaked,錯誤詳細資訊如下:

11-28 16:39:10.867: E/WindowManager(14064): android.view.WindowLeaked: Activity com.sbdz.agriculture.activity.ProductActivity has leaked window android.widget.TextView{45ebeb60 I.ED.... ......I. 0,0-210,348} that was originally added here

11-28 16:39:10.867: E/WindowManager(14064):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:389)

11-28 16:39:10.867: E/WindowManager(14064):     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)

11-28 16:39:10.867: E/WindowManager(14064):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)

11-28 16:39:10.867: E/WindowManager(14064):     at com.sbdz.agriculture.activity.SideBar.init(SideBar.java:66)

11-28 16:39:10.867: E/WindowManager(14064):     at com.sbdz.agriculture.activity.SideBar.<init>(SideBar.java:47)

翻閱資料,發現産生原因:

Android的每一個Activity都有個WindowManager窗體管理器,同樣,建構在某個Activity之上的Dialog、PopupWindow也有相應的WindowManager窗體管理器。Dialog、PopupWindown不能脫離Activity而單獨存在着,是以當某個Dialog或者某個PopupWindow正在顯示的時候我們去finish()了承載該Dialog(或PopupWindow)的Activity時,會抛Window Leaked異常了。

具體解決辦法:退出Dialog、PopupWindow之前,先調用dismiss();

繼續閱讀