TextView未删除的ChangeWatchers导致内存泄漏

Dad*_*boy 5 android

我们有活动和碎片泄漏,并将原因追溯到TextViews上看起来未被移除的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 
Run Code Online (Sandbox Code Playgroud)

如果您将Linkify.addLinks链接到TextView,也会发生这种情况.

有没有办法清理活动B?

emm*_*mby 1

据我所知,这似乎是 Android 中与 TextView ChangeWatcher 和 Linkify 或 Html.fromHtml 可跨越字符串相关的错误。我能够通过调用setText(null)我的活动的 onDestroy() 来解决这个问题。可能还有其他可行的解决方法,但我无法找到有关泄漏的任何进一步信息。