Полупрозрачные активности и жизненный цикл ViewModels | OTUS
⚡Подписка от OTUS!
Собери свой пул курсов на выгодных условиях. Подробности в чате →
Написать в чат

Курсы

Программирование
Unity Game Developer. Basic
-15%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Разработчик C#
-8%
Алгоритмы и структуры данных
-8%
Backend-разработчик на PHP
-8%
JavaScript Developer. Professional
-9%
iOS Developer. Professional
-8%
Базы данных
-12%
C# ASP.NET Core разработчик
-6%
Python Developer. Basic
-10%
Java Developer. Professional Web-разработчик на Python Android Developer. Basic PostgreSQL Software Architect Reverse-Engineering. Professional Kotlin Backend Developer React.js Developer VOIP инженер Нереляционные базы данных Scala-разработчик Супер-практикум по использованию и настройке GIT IoT-разработчик JavaScript Developer. Basic Advanced Fullstack JavaScript developer Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Супер-интенсив "Версионирование и командная работа с помощью Git"
-30%
Administrator Linux. Professional
-5%
Супер-интенсив «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Administrator Linux. Advanced
-8%
Infrastructure as a code in Ansible
-12%
Network engineer
-4%
MS SQL Server Developer
-8%
Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Архитектор сетей Супер-интенсив «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

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

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

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

1_InXHWv6E6bLpOAXbTRZ9Zg_1-1801-326e46.png

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

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

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

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

1_e53GrDAmNgD9WbiI8lgIFw_1-1801-378131.png

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

1_zXVUFwBl5tfBlGxhaUfHQw_1-1801-2b2f66.png

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

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

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

Screenshot_1-1801-aabf62.png

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

Screenshot_2-1801-9e88c3.png

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

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

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

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться