Жизненный цикл Андроид-приложений: навигация и стек переходов | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Алгоритмы и структуры данных Team Lead Архитектура и шаблоны проектирования Разработчик IoT C# Developer. Professional PostgreSQL Разработчик на Spring Framework
-5%
Flutter Mobile Developer NoSQL iOS Developer. Basic
-10%
C++ Developer. Basic C++ Developer. Professional Android Developer. Professional Microservice Architecture Unity Game Developer. Professional Базы данных Node.js Developer React.js Developer Специализация Java-разработчик
-25%
Web-разработчик на Python Framework Laravel Cloud Solution Architecture Vue.js разработчик Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK Administrator Linux. Professional Дизайн сетей ЦОД Разработчик IoT PostgreSQL Экспресс-курс "Версионирование и командная работа с помощью Git"
-30%
Microservice Architecture Highload Architect Специализация Administrator Linux
-25%
Network engineer Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool" Network engineer. Basic
Корпоративные курсы
Безопасность веб-приложений IT-Recruiter Дизайн сетей ЦОД Компьютерное зрение Разработчик IoT Вебинар CERTIPORT Machine Learning. Professional
-6%
NoSQL Пентест. Практика тестирования на проникновение Java QA Engineer. Базовый курс Руководитель поддержки пользователей в IT
-8%
SRE практики и инструменты Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Infrastructure as a code Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» BPMN: Моделирование бизнес-процессов Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+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 комментариев
Для комментирования необходимо авторизоваться