HTML Diff
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