Жизненный цикл Андроид-приложений: навигация и стек переходов | OTUS

Жизненный цикл Андроид-приложений: навигация и стек переходов

spec_android-20219-e709d6.png

В прошлой статье мы рассмотрели жизненный цикл одной активности и несколько соответствующих сценариев. В этот раз поговорим про два сценария, связанные с навигацией.

Следует учесть, что рассматриваемые группы событий отрабатываются параллельно. При этом поток выполнения может переключиться с одной группы на другую в любое время, поэтому порядок вызовов методов не определён. Тем не менее внутри группы последовательный порядок вызовов методов гарантирован. Кроме того, описанные ниже сценарии не применяются к задачам и активностям с кастомным режимом запуска либо заданным контекстом задачи. Более подробную информацию всегда можно найти в документации.

Сценарий № 1: навигация между активностями

Рассмотрим сценарий завершения и повторного запуска приложения:

1_Bt1fQmVtZc0ExHUlzhJO6Q_1-20219-8133bb.png

Здесь при старте новой активности первая активность останавливается (но не уничтожается), что напоминает переход пользователя из приложения с помощью кнопки «Home». При этом, когда пользователь нажмёт на кнопку «Back», вторая активность разрушится и завершится.

Управление состоянием

Важно понять, что метод onSaveInstanceState() вызывается, а метод onRestoreInstanceState() — нет. И если изменение конфигурации произойдёт тогда, когда вторая активность ещё открыта, первая активность разрушится и снова будет создана, если получит фокус обратно. Именно поэтому сохранение состояния имеет значение.

Когда система уничтожит процесс для освобождения ресурсов, возникнет другой сценарий, где состояние потребуется восстановить.

Сценарий № 2: изменения конфигурации и активности в стеке переходов

1_TaoqKwKSPur_2S__OzhdoQ_1-20219-71f5a5.png

Управление состоянием

В этом случае сохранение состояния имеет значение не только для активности переднего плана. Дело в том, что все активности в стеке должны восстановить собственные состояния после изменений конфигурации, дабы заново построить UI. Вдобавок к этому, система способна завершать процесс практически в любой момент, поэтому надо быть готовым к восстановлению состояния в любой момент.

Сценарий № 3: завершение процесса

Если Android нуждается в ресурсах, происходит завершение фоновых приложений.

1_Au5PqGADz31UCfANL3ZRug_1-20219-b9cd03.png

Управление состоянием

Да, весь стек переходов сохраняется, однако, несмотря на это, активности восстанавливаются лишь тогда, когда они заново создаются. Это необходимо для эффективного использования ресурсов системы. Подробнее об этом можете почитать тут.

Источник — «The Android Lifecycle cheat sheet — part II: Multiple activities».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто