0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: android, андроид, андроид-разработка, жизненный цикл приложений, навигация, стек переходов</p>
1
<p>Теги: android, андроид, андроид-разработка, жизненный цикл приложений, навигация, стек переходов</p>
2
<p>В<a>прошлой статье</a>мы рассмотрели жизненный цикл одной активности и несколько соответствующих сценариев. В этот раз поговорим про два сценария, связанные с<strong>навигацией</strong>.</p>
2
<p>В<a>прошлой статье</a>мы рассмотрели жизненный цикл одной активности и несколько соответствующих сценариев. В этот раз поговорим про два сценария, связанные с<strong>навигацией</strong>.</p>
3
<p>Следует учесть, что рассматриваемые группы событий отрабатываются параллельно. При этом поток выполнения может переключиться с одной группы на другую в любое время, поэтому порядок вызовов методов не определён. Тем не менее внутри группы последовательный порядок вызовов методов гарантирован. Кроме того, описанные ниже сценарии не применяются к задачам и активностям с кастомным режимом запуска либо заданным контекстом задачи. Более подробную информацию всегда можно найти в<a>документации</a>.</p>
3
<p>Следует учесть, что рассматриваемые группы событий отрабатываются параллельно. При этом поток выполнения может переключиться с одной группы на другую в любое время, поэтому порядок вызовов методов не определён. Тем не менее внутри группы последовательный порядок вызовов методов гарантирован. Кроме того, описанные ниже сценарии не применяются к задачам и активностям с кастомным режимом запуска либо заданным контекстом задачи. Более подробную информацию всегда можно найти в<a>документации</a>.</p>
4
<h2>Сценарий № 1: навигация между активностями</h2>
4
<h2>Сценарий № 1: навигация между активностями</h2>
5
<p>Рассмотрим сценарий завершения и повторного запуска приложения:</p>
5
<p>Рассмотрим сценарий завершения и повторного запуска приложения:</p>
6
<p>Здесь при старте новой активности первая активность останавливается (но не уничтожается), что напоминает переход пользователя из приложения с помощью кнопки "Home". При этом, когда пользователь нажмёт на кнопку "Back", вторая активность разрушится и завершится.</p>
6
<p>Здесь при старте новой активности первая активность останавливается (но не уничтожается), что напоминает переход пользователя из приложения с помощью кнопки "Home". При этом, когда пользователь нажмёт на кнопку "Back", вторая активность разрушится и завершится.</p>
7
<h4>Управление состоянием</h4>
7
<h4>Управление состоянием</h4>
8
<p>Важно понять, что метод onSaveInstanceState() вызывается, а метод onRestoreInstanceState() - нет. И если изменение конфигурации произойдёт тогда, когда вторая активность ещё открыта, первая активность разрушится и снова будет создана, если получит фокус обратно. Именно поэтому сохранение состояния имеет значение.</p>
8
<p>Важно понять, что метод onSaveInstanceState() вызывается, а метод onRestoreInstanceState() - нет. И если изменение конфигурации произойдёт тогда, когда вторая активность ещё открыта, первая активность разрушится и снова будет создана, если получит фокус обратно. Именно поэтому сохранение состояния имеет значение.</p>
9
<p>Когда система уничтожит процесс для освобождения ресурсов, возникнет другой сценарий, где состояние потребуется восстановить.</p>
9
<p>Когда система уничтожит процесс для освобождения ресурсов, возникнет другой сценарий, где состояние потребуется восстановить.</p>
10
<h2>Сценарий № 2: изменения конфигурации и активности в стеке переходов</h2>
10
<h2>Сценарий № 2: изменения конфигурации и активности в стеке переходов</h2>
11
<h4>Управление состоянием</h4>
11
<h4>Управление состоянием</h4>
12
<p>В этом случае сохранение состояния имеет значение не только для активности переднего плана. Дело в том, что все активности в стеке должны восстановить собственные состояния после изменений конфигурации, дабы заново построить UI. Вдобавок к этому, система способна завершать процесс практически в любой момент, поэтому надо быть готовым к восстановлению состояния в любой момент.</p>
12
<p>В этом случае сохранение состояния имеет значение не только для активности переднего плана. Дело в том, что все активности в стеке должны восстановить собственные состояния после изменений конфигурации, дабы заново построить UI. Вдобавок к этому, система способна завершать процесс практически в любой момент, поэтому надо быть готовым к восстановлению состояния в любой момент.</p>
13
<h2>Сценарий № 3: завершение процесса</h2>
13
<h2>Сценарий № 3: завершение процесса</h2>
14
<p>Если Android нуждается в ресурсах, происходит завершение фоновых приложений.</p>
14
<p>Если Android нуждается в ресурсах, происходит завершение фоновых приложений.</p>
15
<h4>Управление состоянием</h4>
15
<h4>Управление состоянием</h4>
16
<p>Да, весь стек переходов сохраняется, однако, несмотря на это, активности восстанавливаются лишь тогда, когда они заново создаются. Это необходимо для эффективного использования ресурсов системы. Подробнее об этом можете почитать<a>тут</a>.</p>
16
<p>Да, весь стек переходов сохраняется, однако, несмотря на это, активности восстанавливаются лишь тогда, когда они заново создаются. Это необходимо для эффективного использования ресурсов системы. Подробнее об этом можете почитать<a>тут</a>.</p>
17
<p><em>Источник - "<a>The Android Lifecycle cheat sheet - part II: Multiple activities</a>".</em></p>
17
<p><em>Источник - "<a>The Android Lifecycle cheat sheet - part II: Multiple activities</a>".</em></p>
18
18