以前にもEditTextでメモリリークを発見し対応したのですが、その後のライブラリのアップデートで改善されていました。
参考記事:「メモリリーク その4 EditText」
しかし、再び、別の原因によるEditTextのメモリリークが発生しました。
メモリリークが発生する場合と発生しない場合があり、しばらく気付かなかったため、どのライブラリから発生するのかは分かりません。
前回と同様、LeakCanaryで発見しました。
端末:Xperia performance
OS:Android 8.0.0
LeakCanaryより↓
In com.bnbnapp.bookshelf:3.13:3064. * com.bnbnapp.bookshelf.ConditionActivity has leaked: * GC ROOT static android.view.accessibility.AccessibilityNodeInfo.sPool * references android.util.Pools$SynchronizedPool.mPool * references array java.lang.Object[].[32] * references android.view.accessibility.AccessibilityNodeInfo.mOriginalText * references android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence.mSpanned * references android.text.SpannableStringBuilder.mSpans * references array java.lang.Object[].[0] * references android.widget.TextView$ChangeWatcher.this$0 * references android.support.v7.widget.AppCompatEditText.mContext * leaks com.bnbnapp.bookshelf.ConditionActivity instance
こちらの対応は以下。
上記対応すると以下のメモリリークを検出しました。
LeakCanaryより↓
In com.bnbnapp.bookshelf:3.13:3064. * com.bnbnapp.bookshelf.ConditionActivity has leaked: * GC ROOT static android.view.accessibility.AccessibilityNodeInfo.sPool * references android.util.Pools$SynchronizedPool.mPool * references array java.lang.Object[].[5] * references android.view.accessibility.AccessibilityNodeInfo.mOriginalText * references android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence.mSpanned * references android.text.SpannableStringBuilder.mFilters * references array android.text.InputFilter[].[0] * references android.widget.Editor$UndoInputFilter.mEditor * references android.widget.Editor.mProcessTextIntentActionsHandler * references android.widget.Editor$ProcessTextIntentActionsHandler.mContext * leaks com.bnbnapp.bookshelf.ConditionActivity instance
こちらの対応は以下。
以上で、メモリリークは検出されなくなりました。
0 件のコメント:
コメントを投稿