2015-04-12 52 views
0

彈出後臺堆棧後,我的碎片未被垃圾收集?他們的onStop()方法被調用,但不是他們的onDestroyView()onDestroy()方法。彈出後臺堆棧後,我的碎片未被垃圾收集

如何確保調用其方法onDestory()

我犯了一個製作「上帝活動」的錯誤,以及我所有的片段.replace()單個容器FrameLayout。比方說,我有四個片段,FragAFragBFragC,並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()沒有被稱爲要麼。

回答