我們有活動和碎片泄漏並將原因追溯到TextView上的似乎未刪除的ChangeWatchers。TextView未刪除ChangeWatchers導致內存泄漏
場景: 活動A啓動活動B. B在其佈局中有一個textPassword EditText字段。活動B完成。
的HPROF轉儲顯示,仍然有活動B.的一個實例,其gcroot路徑如下:
test.maa.LoginActivity
'- mContext android.widget.EditText
'- this$0 android.widget.TextView$ChangeWatcher
'- [1] java.lang.Object[13]
'- mSpans android.text.SpannableStringBuilder
'- mSource android.text.method.PasswordTransformationMethod$PasswordCharSequence
'- mText android.text.MeasuredText
'- mMeasured android.text.StaticLayout
'- sStaticLayout class android.text.DynamicLayout
這也如果你Linkify.addLinks恰好一個TextView。
有沒有什麼辦法清理Activity B?
你說「活動B完成」 - 它如何「完成」?你是否明確地調用'finish()',按下「BACK」按鈕或其他方法? – Squonk 2012-04-19 22:49:44
test.maa.LoginActivity是B?您是否在傾銷HPROF之前強制使用GC,以確保它不是簡單地未收集到的?或者只是暫停,仍然參考請參閱@MisterSquonkq – zapl 2012-04-19 22:53:11
在不同設備上進行進一步測試表明,運行3.1的GSlate上會出現此問題,但運行Thunderbolt時不會發生此問題。2.3.4 – Daddyboy 2012-04-19 23:04:35