【问题标题】:After popping the backstack, my Fragments are not being garbage collected弹出后台堆栈后,我的片段没有被垃圾收集
【发布时间】:2015-04-12 17:30:09
【问题描述】:

弹出回栈后,我的 Fragments 没有被垃圾回收?他们的onStop() 方法被调用,但不是他们的onDestroyView()onDestroy() 方法。

如何确保他们的onDestory() 方法被调用?

我犯了一个错误,做了一个“上帝活动”,我所有的片段.replace()一个容器FrameLayout。假设我有四个片段,FragAFragBFragCFragD,其后栈看起来像这样:

FragA -> FragB -> FragC -> FragD

FragD is the only visible fragment. Then, I call .popBackstack()`

FragA -> FragB -> FragC =!= FragD

FragD 已被分离,FragC 现在对用户可见。当尝试实例化一个新的FragD(来自FragC)时,它被创建了,我的堆上有两个FragD 实例。并且第一个FragD 实例的onDestroyView() 没有被调用。

我该如何解决这个问题?

编辑:这是我当前如何在 UI 中替换片段的示例:

getSupportFragmentManager().beginTransaction()
            .replace(R.id.container, new SearchScreenFragment())
            .addToBackStack(null)
            .commit();

EDIT2:onDetach() 也没有被调用。

【问题讨论】:

    标签: android android-fragments back-stack


    【解决方案1】:

    我应该一直在使用这个:getChildFragmentManager()

    来自https://stackoverflow.com/a/23500935/891242

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 2018-10-05
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2011-10-12
      • 1970-01-01
      相关资源
      最近更新 更多