彈出後臺堆棧後,我的碎片未被垃圾收集?他們的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