【问题标题】:LeakCanary leaks fragmentLeakCanary 泄漏片段
【发布时间】:2019-01-18 16:34:38
【问题描述】:

在将leakCanary 更新到1.6.2 后,使用replace + addToBackstack 时出现泄漏。

我该如何处理?

android.support.constraint.ConstraintLayout has leaked:
Toast$TN.mNextView
    LinearLayout.mContext
    PinSetCodeActivity.fragmentProcessor
    OverlayFragmentProcessor.fragmentManager
    FragmentManagerImpl.mActive
    SparseArray.mValues
    array Object[].[1]
    PinInputFragment.!(mSavedViewState)!
    SparseArray.!(mValues)!
    array Object[].!([4])!
    TextView$SavedState.!(text)!
    SpannableStringBuilder.!(mSpans)!
    array Object[].!([1])!
    PasswordTransformationMethod$Visible.!(mText)!
    SpannableStringBuilder.!(mSpans)!
    array Object[].!([0])!
    TextView$ChangeWatcher.!(this$0)!
    LinearLayout.mParent
    ConstraintLayout
Reference Key: 83b4e2f0-f09c-40dd-a639-2d27e91c9ea3
Device: samsung samsung SM-G950F dreamltexx
Android Version: 8.0.0 API: 26 LeakCanary: 1.6.2 0ebc1fc
Durations: watch=5202ms, gc=232ms, heap dump=1603ms, analysis=14172ms

【问题讨论】:

    标签: java android memory-leaks fragment leakcanary


    【解决方案1】:

    在没有看到相关源代码的情况下很难猜出导致泄漏的原因,但TextView$ChangeWatcher.!(this$0)! 建议您在 Fragment beeing 替换中设置一个 TextWatcher。如果您不在片段“onDestroyView”方法中删除此观察程序,它将保留对其附加到的视图的硬引用。这将阻止垃圾收集并导致 LeakCanary 建议的泄漏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      相关资源
      最近更新 更多