Решил также для общего понимания изучить жизненный цикл фрагмента в связке с жизненным циклом активности, происходящий при запуске и уничтожении активности с фрагментом. Получилось следующее:
Список перехватываемых методов фрагмента
Три основных метода, которые используются практически в любом приложении:
onCreate — инициализация внутренних компонентов фрагмента сохранёнными данными.
onCreateView — формирование компонента для отображения.
onPause — обработка ситуации, когда фрагмент теряет фокус.
Описание всех методов по порядку их вызова:
onAttach — первое подсоединение фрагмента к активности. Сюда передаётся активность, к которой происходит подсоединение.
onCreate — инициализация фрагмента. Сюда передаются данные класса Bundle о последнем состоянии фрагмента в его предыдущей жизни, если таковая была, сохранённые ранее, например, в методе onSaveInstanceState, для восстановления этого состояния. На этот момент активность ещё находится в процессе создания.
onCreateView — формирование вида для отображения. Возвращает вид фрагмента. Может возвращать null для невизуальных компонентов. Сюда передаются данные класса Bundle о последнем состоянии фрагмента, а также контейнер активности, куда будет подключаться фрагмент и «надуватель» разметки.
onViewCreated — вызывается, когда вид сформирован. Сюда передаётся сформированный вид и данные класса Bundle о последнем состоянии фрагмента. Используется для окончательной инициализации вида перед восстановлением сохранённого состояния. В этой точке вид ещё не прикреплён к фрагменту.
onActivityCreated — окончательная инициализация. Вызывется когда метод onCreate() активности был возвращен. Активность создана, фрагмент в неё вставлен. Используется, например, для восстановления состояния фрагмента. Сюда передаются данные класса Bundle о последнем состоянии фрагмента.
onViewStateRestored — инициализация вида на основе сохранённого состояния. Вызывается, когда сохранённое состояние вида восстановлено.
onStart — запуск фрагмента. Метод привязан к одноимённому методу жизненного цикла активности. Здесь обычно создаются объекты, которые затем разрушаются в методе onStop.
onResume — пуск в работу. Метод привязан к одноимённому методу жизненного цикла активности. Здесь обычно запускают анимацию, открывают устройства с эксклюзивным доступом (такие, как камера) и т.п.
onPause — обработка ситуации, когда фрагмент теряет фокус. Метод привязан к одноимённому методу жизненного цикла активности. Здесь останавливают анимацию и другие процессы, грузящие процессор.
onSaveInstanceState — сохранение состояния фрагмента. Срабатывает только в том случае, если фрагмент останавливается и может быть убит системой, но фактически ещё нужен. Это происходит, например, при вызове следующей активности, при нажатии кнопки «домой» а также в случае полного разрушения активности и создания её заново в результате изменения конфигурации устройства (смена языка, устройства ввода, ориентации экрана и т.п.). Объект класса Bundle, хранящий состояние активности, передаётся в методы onCreate, onPostCreate и onRestoreInstanceState. Внимание! Метод может быть вызван в любое время до onDestroy!
onStop — вызывается перед остановкой фрагмента. Метод привязан к одноимённому методу жизненного цикла активности. Здесь освобождаются объекты, созданные в методе onStart.
onDestroyView — вызывается при отсоединении вида от фрагмента. При следующем отображении фрагмента будет сформирован новый вид.
onDestroy — выполнение окончательной очистки перед уничтожением фрагмента. Здесь освобождают все занятые ресурсы (потоки и пр., созданные в onCreate). Вызывается перед тем, как фрагмент уничтожается.
onDetach — вызывается перед отсоединением фрагмента от активности.
на рисунке поправте в методе onViewStateRestored вместо буквы "t" у вас буква "y".
ОтветитьУдалитьА вообще молодец, отличная таблица, с прекрасными пояснениями -)
Спасибо, поправлю! )
УдалитьСтатья - огонь!
ОтветитьУдалить