LeakCanary утечки фрагмент - PullRequest
0 голосов
/ 18 января 2019

После обновления leakCanary до 1.6.2 появились утечки при замене + addToBackstack. Как я могу справиться с этим?

  • android.support.constraint.ConstraintLayout просочилась:
  • Тост $ TN.mNextView
  • ↳ LinearLayout.mContext
  • ↳ PinSetCodeActivity.fragmentProcessor
  • ↳ OverlayFragmentProcessor.fragmentManager
  • ↳ FragmentManagerImpl.mActive
  • ↳ SparseArray.mValues ​​
  • ↳ массив объектов []. [1]
  • ↳ PinInputFragment.! (MSavedViewState)!
  • ↳ SparseArray.! (MValues)!
  • ↳ массив объектов [].! ([4])!
  • ↳ TextView $ SavedState.! (Текст)!
  • ↳ SpannableStringBuilder.! (MSpans)!
  • ↳ массив объектов [].! ([1])!
  • ↳ PasswordTransformationMethod $ Visible.! (MText)!
  • ↳ SpannableStringBuilder.! (MSpans)!
  • ↳ массив объектов [].! ([0])!
  • ↳ TextView $ ChangeWatcher.! (Это $ 0)!
  • ↳ LinearLayout.mParent
  • ↳ ConstraintLayout
  • Ссылочный ключ: 83b4e2f0-f09c-40dd-a639-2d27e91c9ea3
  • Устройство: Samsung SM-G950F dreamltexx
  • Версия Android: 8.0.0 API: 26 LeakCanary: 1.6.2 0ebc1fc
  • Продолжительность: часы = 5202 мс, gc = 232 мс, дамп кучи = 1603 мс, анализ = 14172 мс

1 Ответ

0 голосов
/ 25 января 2019

довольно сложно догадаться, что вызвало утечку, не видя соответствующего исходного кода, но TextView$ChangeWatcher.!(this$0)! предполагает, что вы установите TextWatcher в замененном фрагменте. Если вы не удалите этот наблюдатель из метода «onDestroyView» фрагментов, он будет сохранять жесткую ссылку на представление, к которому он прикреплен. Это предотвратит сборку мусора и приведет к утечке, предложенной LeakCanary.

...