Жизненный цикл Андроид-приложений: навигация и стек переходов | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

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

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

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

Сценарий № 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 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!