После того, как вы вытолкнули задний стек, мои фрагменты не собираются мусором? Вызываются их методы 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
. И onDestroyView()
первого экземпляра FragD
не вызывается.
Как я могу это исправить?
РЕДАКТИРОВАТЬ: вот пример того, как я сейчас заменяю фрагменты в своем пользовательском интерфейсе:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new SearchScreenFragment())
.addToBackStack(null)
.commit();
EDIT2: onDetach()
тоже не вызывается.