У меня есть одно Activity
приложение с несколькими Fragments
, которые переключаются с помощью компонентов навигации. Когда я переключаюсь между двумя фрагментами, их onCreate()
и onDestroy()
методы, кажется, пересекаются. Это затрудняет мне написание инициализации и очистку кода для фрагментов, когда они получают доступ к одним и тем же глобальным объектам.
Переход от Framgent_A
к Fragment_B
имеет следующий порядок методов:
Fragment_B.onCreate()
Fragment_A.onDestroy()
В Fragment_A.onDestroy()
Я отменяю операции, которые выполняю в Fragment_A.onCreate()
. И в Fragment_B
я ожидаю, что все будет в нейтральном состоянии, когда вызывается onCreate()
. Однако это не так, поскольку Fragment_A.onDestroy()
еще не был вызван.
Нормальное перекрытие на Android или я настроил что-то неправильно в моих компонентах навигации? Есть ли другой способ добиться того, что я пытаюсь сделать? Я знаю, что мог бы соединить оба Fragments
и заставить это работать, но я не хочу, чтобы Фрагмент знал друг о друге. Мне кажется странным, что Framgnet_A
все еще жив, когда создается Fragment_B
, когда Fragment_B
должен заменить Fragment_A
.
Любая помощь очень ценится!
Редактировать:
После просмотра исходного кода во время отладки я обнаружил, что в FragmentNavigator.navigate()
FragmentTransaction.setReorderingAllowed () вызывается , что позволяет переупорядочивать операции, даже позволяя onCreate()
нового фрагмента быть вызванным до onDestroy()
предыдущего. Все еще остается вопрос, как мне решить мою проблему правильной очистки глобального состояния в одном фрагменте перед инициализацией того же глобального состояния в следующем фрагменте.