弹出后堆栈后,我的片段没有被垃圾收集

After popping the backstack, my Fragments are not being garbage collected

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

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

我犯了一个错误,将 "God Activity" 和我所有的片段 .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() 也没有被调用。

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

来自