Полупрозрачные активности и жизненный цикл ViewModels

ViewModels (модели представления)

Жизненный цикл модели представления относительно прост — у нее всего лишь один метод обратного вызова, называемый onCleared(). Однако когда мы говорим о ViewModels, нужно понимать различие между фрагментом и активностью. Рамки их действия различны:

Обратите внимание, что инициализация происходит каждый раз, когда вы получаете ViewModel, что обычно происходит в onCreate().

Полупрозрачные активности

Название говорит само за себя, поэтому полупрозрачная активность имеет полупрозрачный фон (обычно он совсем прозрачный). В результате пользователь видит, что под ней находится.

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

Кроме того, в случае возвращения обратно к задаче, обе активности восстановятся и запустятся, и лишь полупрозрачная возобновится:

Режимы запуска

Одна из рекомендаций по работе с задачами и стеками переходов проста: следуйте поведению по умолчанию. Подробнее об этом здесь.

Если же в самом деле требуется режим SINGLE_TOP, то вот диаграмма для ознакомления:

Для сравнения, обратите внимание на режим singleTask на следующей картинке (однако, скорее всего, его вам использовать не надо):

Если же вы применяете Navigation Architecture из Jetpack, то получите профит от поддержки Single Top и автоматического искусственного стека переходов.

По материалам «The Android Lifecycle cheat sheet — part IV : ViewModels, Translucent Activities and Launch Modes».

Предыдущие статьи на эту тему: 1. Жизненный цикл Андроид-приложений. 2. Жизненный цикл фрагментов Андроид-приложений. 3. Жизненный цикл Андроид-приложений: навигация и стек переходов.