弹出后台堆栈后,我的碎片未被垃圾收集?他们的onStop()
方法被调用,但不是他们的onDestroyView()
或onDestroy()
方法。弹出后台堆栈后,我的碎片未被垃圾收集
如何确保调用其方法onDestory()
?
我犯了一个制作“上帝活动”的错误,以及我所有的片段.replace()
单个容器FrameLayout
。比方说,我有四个片段,FragA
,FragB
,FragC
,并FragD
,用堆栈中,看起来是这样的:
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()
未被调用。
我该如何解决这个问题?
编辑:这里有一个如何我currecntly在我的UI更换片段的例子:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new SearchScreenFragment())
.addToBackStack(null)
.commit();
EDIT2:onDetach()
没有被称为要么。
你应该接受这个答案。 – Heinrich
不能接受它两天:( – ZakTaccardi
啊,好吧然后。:/ – Heinrich