понедельник, 24 ноября 2014 г.

Жизненный цикл фрагмента

Решил также для общего понимания изучить жизненный цикл фрагмента в связке с жизненным циклом активности, происходящий при запуске и уничтожении активности с фрагментом. Получилось следующее:



Список перехватываемых методов фрагмента

Три основных метода, которые используются практически в любом приложении:

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 — вызывается перед отсоединением фрагмента от активности.


3 комментария:

  1. на рисунке поправте в методе onViewStateRestored вместо буквы "t" у вас буква "y".
    А вообще молодец, отличная таблица, с прекрасными пояснениями -)

    ОтветитьУдалить