Жизненный цикл Fragment
onAttach() // 1. Фрагмент прикрепляется к активности
|
onCreate() // 2. Инициализация фрагмента
|
onCreateView() // 3. Создание представления фрагмента
|
onViewCreated() // 4. Настройка UI после создания представления
|
onStart() // 5. Фрагмент становится видимым для пользователя
|
onResume() // 6. Фрагмент активен и может взаимодействовать
|
onPause() // 7. Фрагмент теряет фокус, но еще виден
|
onStop() // 8. Фрагмент больше не виден
|
onDestroyView() // 9. Уничтожение представления фрагмента
|
onDestroy() // 10. Уничтожение фрагмента
|
onDetach() // 11. Окончательное отделение фрагмента от активности
Для управления ЖЦ фрагмент имплементирует LifecycleOwner (получить объект Lifecycle можно изнутри).
Фрагмент добавлен в FragmentManager и метод onAttach
вызван. View еще не создана, у фрагмента вызван метод onCreate(savedInstanceState: Bundle?)
. В первый вызов savedInstanceState
всегда null, но при пересоздании уже не null, даже если не был перегружен метод onSaveInstanceState()
Fragment's view lifecycle создан когда фрагмент создает экземпляр View с помощью метода onCreateView
или при передаче layoutId
в конструкторе. Параметр getViewLifecycleOwnerLiveData
обновляется с новым LifecycleOwner, относящимся к вьюшке фрагмента.
У некоторых компонентов типа ViewPager2 максимальный Lifecycle - STARTED
Когда фрагмент видимый, все Animator
и Transition
эффекты закончены и фрагмент готов для взаимодействия с пользователем. Lifecycle = RESUMED и onResume
вызван.
Пользователь начинает покидать фрагмент, но он еще видим для пользователя. Вызывается метод onPause()
Фрагмент не видим для пользователя, Lifecycle = CREATED и вызывается метод onStop
.
После того как все анимации и переходы завершены, fragment's view отсоединена от window
, fragment's view lifecycle = DESTROYED. Фрагмент выполняет onDestroyView()
. Это последняя точка для fragment's view lifecycle, и getViewLifecycleOwnerLiveData() == null
Если фрагмент удален или его FragmentManager уничтожен, Lifecycle = DESTROYED
Fragment LifeCycle | Fragment Callback | View Lifecycle |
---|---|---|
CREATED CREATED CREATED CREATED |
onCreate() onCreateView() onViewCreated() onViewStateRestored() |
INITIALIZED INITIALIZED INITIALIZED CREATED |
STARTED | onStart() | STARTED |
RESUMED | onResume() | RESUMED |
STARTED | onPause() | STARTED |
CREATED CREATED CREATED |
onStop() onSaveInstanceState() onDestroyView() |
CREATED CREATED DESTROYED |
DESTROYED | onDestroy | - |
// NB: onViewStateRestored(savedInstanceState: Bundle?)
- вызывается когда все saved states восстановдены в View иерархию фрагмента. Это может быть использовано для инициализации предыдущего состоянию вьюшек, например, отметки чекбоксов и проч.