1洁仗、addView窗體泄漏問題:android.view.WindowLeaked
android.view.WindowLeaked一般會發(fā)生在Activity與Dialog的顯示丈探。
(1)dialog叛溢、PopupWindown窗體
原因:我們知道Android的每一個Activity都有個WindowManager窗體管理器此叠,同樣毅待,構(gòu)建在某個Activity之上的dialog饱溢、PopupWindow也有相應(yīng)的WindowManager窗體管理器庭猩。因為dialog、PopupWindown不能脫離Activity而單獨存在著纸泡,所以當某個Dialog或者某個PopupWindow正在顯示的時候我們?nèi)inish()了承載該Dialog(或PopupWindow)的Activity時漂问,就會拋Window Leaked異常了,因為這個Dialog(或PopupWindow)的WindowManager已經(jīng)沒有誰可以附屬了女揭,所以它的窗體管理器已經(jīng)泄漏了蚤假。
解決方法:關(guān)閉(finish)某個Activity前,要確保附屬在上面的Dialog或PopupWindow已經(jīng)關(guān)閉(dismiss)了吧兔。
(2)activity窗體
和dialog不同磷仰,WindowManager在AddView后,在activity的onDestroy中移除View時用removeViewImmediate?()掩驱,而不能用removeView()芒划。
2、removeView報not attached to window manager問題
原因:若當前view已經(jīng)remove了欧穴,再次調(diào)用removeView會報以上錯誤民逼。
解決方法:removeView時需要先判斷當前view是否已經(jīng)移除過。