Оставьте заявку
Отправить заявку
Нажимая на кнопку «Отправить заявку», Вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности.
Cистемный взгляд на каждый этап, объясняя не только "как", но и "почему", раскрывая компромиссы и скрытые нюансы, известные только опытным практикам.

Разработка Android приложений: концепция и релиз

Создание современного Android-приложения — это сложный инженерный процесс, объединяющий выбор языка программирования, архитектуры, инструментов разработки и стратегии публикации. Данное руководство предлагает системный взгляд на каждый этап, объясняя не только "как", но и "почему", раскрывая компромиссы и скрытые нюансы, известные только опытным практикам.

Какие языки программирования используются для разработки Android приложений?

Современная Android-разработка в основном ведется на Kotlin как официально рекомендованном языке, Java как унаследованном гиганте с огромной кодобазой и C++ через NDK для задач, требующих высокой производительности и низкоуровневого доступа.

Выбор языка определяет не только синтаксис, но и доступность современных функций, производительность исполнения, безопасность и легкость поддержки кода. Kotlin, представленный JetBrains и официально поддержанный Google в 2017 году, устранил многие недостатки Java, предложив лаконичный синтаксис, null-безопасность на уровне типа и расширенные функции функционального программирования. Java остается доминирующим языком в тысячах legacy-проектов, предлагая незыблемую стабильность, предсказуемость и огромное сообщество. C++ в связке с Native Development Kit (NDK) применяется в узких сегментах: разработке игровых движков, высокопроизводительных аудио- и видеопроцессорах, алгоритмах компьютерного зрения и любых вычислениях, где накладные расходы виртуальной машины Dalvik/ART неприемлемы.

Kotlin против Java: что выбрать для нового проекта в 2024 году?

Для любого нового коммерческого проекта однозначным выбором должен стать Kotlin, так как он предлагает современные языковые конструкции, повышающие производительность разработчика и снижающие количество runtime-ошибок, при полной совместимости с существующими Java-библиотеками.

Выбирая Kotlin ради лаконичности, null-безопасности и корутин для асинхронности, мы неизбежно жертвуем несколько увеличенным временем сборки из-за дополнительного этапа компиляции Kotlin в байт-код JVM и менее очевидной для новичков отладкой некоторых продвинутых функций. Обратная сторона медали зрелости и предсказуемости Java — это архаичный и многословный синтаксис, требующий написания большого количества шаблонного кода (boilerplate), а также постоянная ручная проверка на null, что является источником знаменитых NullPointerException. Основной компромисс при выборе Java для нового проекта заключается в том, что ради доступа к огромной базе знаний и библиотек, приходится мириться с менее выразительным кодом и отсутствием официальной долгосрочной поддержки новых Android API со стороны Google, который фокусируется на Kotlin.

По разработке мобильных приложений
1 место
По разработке технологичных
web-приложений
4 место
5 место
По разработке cайтов любой степени сложности
Почему нам доверяют

Какие инструменты и среды разработки (IDE) необходимы для создания Android приложений?

Абсолютным стандартом де-факто является Android Studio — интегрированная среда разработки на базе IntelliJ IDEA, целенаправленно созданная Google для Android, предоставляющая эмуляторы, профилировщики, визуальные редакторы макетов и глубокую интеграцию со всей экосистемой.

Android Studio выступает командным центром разработчика, объединяя в себе не только текстовый редактор и компилятор, но и мощный эмулятор различных устройств и версий ОС, профайлер для отслеживания потребления памяти, загрузки CPU и расхода батареи, а также инструменты для отслеживания производительности UI. Альтернативы, такие как Visual Studio Code с набором плагинов или IntelliJ IDEA Community Edition, теоретически возможны, но они требуют значительной дополнительной настройки и лишают разработчика ключевых специфичных для Android инструментов отладки и анализа, предлагая лишь базовую функциональность написания кода. Выбор Android Studio ради полного набора инструментов подразумевает согласие с высокими требованиями к аппаратным ресурсам компьютера, особенно объему оперативной памяти, которая должна быть не менее 16 ГБ для комфортной работы с крупными проектами и одновременной работой эмулятора.

Какова базовая архитектура современного Android приложения?

Современная архитектура строится на принципах реактивного программирования и однонаправленного потока данных, часто реализуемых через паттерн Model-View-Intent (MVI) или Model-View-ViewModel (MVVM) с использованием компонентов Android Jetpack, таких как ViewModel, LiveData/StateFlow и Room.

Архитектура призвана решить ключевые проблемы: разделение ответственности для упрощения тестирования, сохранение состояния приложения при смене конфигурации и обеспечение жизнеспособности приложения throughout его жизненного цикла. Модель ViewModel, как часть Jetpack, предназначена для хранения и управления UI-данными, переживая разрушение и повторное создание Activity и Fragment, что элегантно решает проблему потери состояния при повороте экрана. Для управления бизнес-логикой и данными используется слой репозиториев, который абстрагирует источник данных, будь то локальная база данных через Room ORM или сетевое взаимодействие через Retrofit и OkHttp. Выбирая реактивные потоки данных с помощью LiveData или, что более современно, Kotlin Flow, мы обеспечиваем автоматическое обновление UI при изменении данных, но неизбежно жертвуем простотой понимания потока исполнения кода и добавляем сложность отладки асинхронных операций для новичков.

Кто будет работать вместе с вами

Наша команда — опытные специалисты по разработке сайтов и мобильных приложений, которые создают качественные и эффективные IT-решения для клиентов.
Руководитель компании
Алексей Корсун
Ведущий менеджер проектов
Аэлита Лукина
Менеджер проектов
Астра Молдакунова
Ведущий React Native- разработчик
Игорь Орехов
Ведущий PHP-разработчик, 1С-Битрикс-разработчик
Андрей Ягин
React Native- разработчик
Дмитрий Козловских
React Native- разработчик, тестировщик
Алина Табачникас

Эволюционный путь: Как мы к этому пришли?

Эволюция Android-разработки — это путь от монолитных и хрупких Activity к декомпозированным, реактивным и тестируемым архитектурам, движимый необходимостью управлять растущей сложностью приложений и их жизненным циклом.

Лет 10-15 назад стандартом была модель Model-View-Controller (MVC), где вся логика зачастую помещалась в гигантские Activity или Fragment, которые выступали и контроллерами, и часто напрямую работали с моделью. Ключевыми недостатками этого подхода были крайне слабое разделение ответственности, невозможность юнит-тестирования логики из-за ее жесткой привязки к Android-компонентам, и постоянная утечка памяти и потеря состояния из-за непредсказуемого жизненного цикла. В попытках решить эти проблемы сообщество пробовало внедрить паттерны вроде Model-View-Presenter (MVP), который стал популярным на годы. MVP явно отделял логику (Presenter) от view (Activity), что решало проблему тестируемости, но порождал другую: необходимость вручную управлять жизненным циклом Presenter и предотвращать утечки ссылок на view, что вело к большому количеству шаблонного кода.

Были и тупиковые ветви развития, такие как полное игнорирование архитектурных паттернов в угоду скорости разработки или попытки использовать чистый MVC, который в условиях Android не работал как задумано. Альтернативная технология, которая не прижилась массово в своем чистом виде — это использование событийных шин данных, подобных Otto или зеленому роботу EventBus. Их первоначальная популярность объяснялась простотой передачи данных между компонентами, но обратной стороной медали стала катастрофическая потеря явности потока данных. События могли генерироваться и потребляться где угодно, делая код абсолютно непредсказуемым, сложным для отладки и поддержки, что в итоге привело к отказу от них в пользу локальных реактивных потоков. Современное решение на основе ViewModel, LiveData/Flow и слоя Use Cases элегантно решает проблемы предшественников: компоненты имеют четко ограниченную зону ответственности, жизнь данных привязана к жизненному циклу компонентов UI автоматически, а поток данных является однонаправленным и предсказуемым, что облегчает и тестирование, и отладку.

Как работает жизненный цикл компонентов Android (Activity, Fragment)?

Жизненный цикл Activity и Fragment — это конечный автомат с четко определенными состояниями (created, started, resumed, paused, stopped, destroyed) и коллбеками (onCreate, onStart, onResume, etc.), которыми система уведомляет компонент о изменениях его видимости и приоритета, позволяя управлять ресурсами и состоянием UI.

Понимание жизненного цикла критично для предотвращения утечек памяти, сохранения данных пользователя и обеспечения отзывчивого интерфейса. Система Android, как многозадачная ОС, может в любой момент остановить или уничтожить фоновый компонент для освобождения ресурсов, и приложение должно быть готово корректно сохранить и восстановить свое состояние. Например, тяжелые операции сети или базы данных не должны запускаться в методе onResume, так как это главный поток UI, и их блокирующая природа вызовет задержки в отрисовке кадров. Вместо этого их следует выносить в фоновые потоки, используя корутины или WorkManager, а результаты доставлять в UI-поток безопасным способом. Обратная сторона медали гибкости жизненного цикла — это его сложность, требующая от разработчика явной обработки множества сценариев, что historically было источником countless багов.

Отзывы
Евгений
VPN приложение
С командой Mobility.top мы сотрудничаем больше 3 лет. За это время было сделано множество проектов, но отдельно хочу поблагодарить за VPN приложение, которое они сделали полностью с нуля, в том числе нашли и провайдера для VPN, а также представляли наши интересы на переговорах.
А. Селиванов
Pretty Boa
Выражаем вам огромную благодарность за наше приложение. С командой Mobility.top мы сотрудничаем больше 3 лет. За это время было сделано множество проектов, но отдельно хочу поблагодарить за VPN приложение, которое они сделали полностью с нуля, в том числе нашли и провайдера для VPN, а также представляли наши интересы на переговорах.
Артем
Нативное Android приложение для подачи заявок
Могу смело рекомендовать Mobility.top в качестве надежного контрагента и разработчика. Наша компания давно планировала разработку внутреннего приложения для подачи и обработки заявок, но не было четкого ТЗ и плана работ. Представители Mobility.top смогли помочь и с тем, и с другим, а главное вовремя разработать и запустить приложение.
Александр
Нативное iOS приложение для ЖКХ
Вы совершили то, что было
не под силу двум другим командам. Наконец-то завершили начатый нами более года назад проект. Также подсказали, какие библиотеки лучше использовать для наших задач.
А. Гревцев
AllTeaCoffee
ООО «Мобилити.топ» является партнером ООО «Май» по разработке и развитию сайтов и интернет-платформ на базе lС-Битрикс. За время работы наши партнеры из Мобилити зарекомендовали себя как надежного партнера, который оперативно решает важные и срочные задачи. Отмечаем их ответственное отношение к нашим амбициозным требованиям, своевременное решение вопросов, выполнение поставленных задач в оговоренный срок и профессионализм, с которым команда выполняет свои принятые обязательства.

Рекомендую ООО «Мобилити.топ» как надежного и добросовестного партнера.
Н.А. Выскубова
Зам. Министра туризма
Министерство туризма Тверской области выражает благодарность коллективу ООО «МОБИЛИТИ.ТОП» за профессионализм и компетентность команды в рамках взаимодействия по государственному контракту № 0136500001123005935-ОК от 08.11.2023 года.
За период сотрудничества ООО «МОБИЛИТИ.ТОП» зарекомендовало себя как надежного и добросовестного партнера, способного качественно выполнять поставленные задачи.
С.А. Малышева
Директор зоопарка
БУК УР «Зоопарк Удмуртии» благодарит ООО «Мобилити Топ» за проявленный высокий профессионализм в разработке интернет-проекта - сайта для БУК УР «Зоопарк Удмуртии».
Компетентность, быстрое решение вопросов, возникающих в ходе работы, ответственность и доброжелательность персонала сделали сотрудничество с ООО «Мобилити Топ» приятным, плодотворным и эффективным.
Желаем компании Вашей процветания и дальнейшего удержания лидерских
позиций.
С уважением и надеждой на дальнейшее сотрудничество.
И.М. Семенов
Сlickmeal
Уважаемые Mobility.Top,

Выражаем вам огромную благодарность за проделанную работу. Отдельно хотелось бы отметить, что наш проект-менеджер всегда был на связи, мы детально обсуждали все особенности приложения, каждый элемент дизайна. Сроки разработки немного растянулись, но это потому, что мы добавили несколько фич в процессе разработки. Резюме - доволен и рекомендую!
Евгений
VPN приложение
С командой Mobility.top мы сотрудничаем больше 3 лет. За это время было сделано множество проектов, но отдельно хочу поблагодарить за VPN приложение, которое они сделали полностью с нуля, в том числе нашли и провайдера для VPN, а также представляли наши интересы на переговорах.
А. Селиванов
Pretty Boa
Выражаем вам огромную благодарность за наше приложение. С командой Mobility.top мы сотрудничаем больше 3 лет. За это время было сделано множество проектов, но отдельно хочу поблагодарить за VPN приложение, которое они сделали полностью с нуля, в том числе нашли и провайдера для VPN, а также представляли наши интересы на переговорах.
Артем
Нативное Android приложение для подачи заявок
Могу смело рекомендовать Mobility.top в качестве надежного контрагента и разработчика. Наша компания давно планировала разработку внутреннего приложения для подачи и обработки заявок, но не было четкого ТЗ и плана работ. Представители Mobility.top смогли помочь и с тем, и с другим, а главное вовремя разработать и запустить приложение.
Александр
Нативное iOS приложение для ЖКХ
Вы совершили то, что было
не под силу двум другим командам. Наконец-то завершили начатый нами более года назад проект. Также подсказали, какие библиотеки лучше использовать для наших задач.
А. Гревцев
AllTeaCoffee
ООО «Мобилити.топ» является партнером ООО «Май» по разработке и развитию сайтов и интернет-платформ на базе lС-Битрикс. За время работы наши партнеры из Мобилити зарекомендовали себя как надежного партнера, который оперативно решает важные и срочные задачи. Отмечаем их ответственное отношение к нашим амбициозным требованиям, своевременное решение вопросов, выполнение поставленных задач в оговоренный срок и профессионализм, с которым команда выполняет свои принятые обязательства.

Рекомендую ООО «Мобилити.топ» как надежного и добросовестного партнера.
Н.А. Выскубова
Зам. Министра туризма
Министерство туризма Тверской области выражает благодарность коллективу ООО «МОБИЛИТИ.ТОП» за профессионализм и компетентность команды в рамках взаимодействия по государственному контракту № 0136500001123005935-ОК от 08.11.2023 года.
За период сотрудничества ООО «МОБИЛИТИ.ТОП» зарекомендовало себя как надежного и добросовестного партнера, способного качественно выполнять поставленные задачи.
С.А. Малышева
Директор зоопарка
БУК УР «Зоопарк Удмуртии» благодарит ООО «Мобилити Топ» за проявленный высокий профессионализм в разработке интернет-проекта - сайта для БУК УР «Зоопарк Удмуртии».
Компетентность, быстрое решение вопросов, возникающих в ходе работы, ответственность и доброжелательность персонала сделали сотрудничество с ООО «Мобилити Топ» приятным, плодотворным и эффективным.
Желаем компании Вашей процветания и дальнейшего удержания лидерских
позиций.
С уважением и надеждой на дальнейшее сотрудничество.
И.М. Семенов
Сlickmeal
Уважаемые Mobility.Top,

Выражаем вам огромную благодарность за проделанную работу. Отдельно хотелось бы отметить, что наш проект-менеджер всегда был на связи, мы детально обсуждали все особенности приложения, каждый элемент дизайна. Сроки разработки немного растянулись, но это потому, что мы добавили несколько фич в процессе разработки. Резюме - доволен и рекомендую!

Какие основные проблемы и вызовы возникают при разработке под Android?

Ключевые вызовы включают фрагментацию устройств и версий ОС, необходимость обеспечения обратной совместимости, оптимизацию потребления памяти и батареи, а также создание отзывчивого интерфейса, не блокирующего главный поток.

Фрагментация — это вызов, уникальный для экосистемы Android, где тысячи устройств с разными размерами экранов, плотностями пикселей, аппаратными возможностями и версиями ОС должны корректно запускать одно приложение. Это требует тщательного тестирования на разных конфигурациях, использования ресурсных квалификаторов и Support Libraries/Jetpack для обратной совместимости новых функций. Проблема потребления памяти и батареи напрямую связана с пользовательским опытом; приложения, ведущие к быстрому разряду батареи, получают низкие оценки и удаляются. Это требует использования профилировщиков для поиска утечек памяти, оптимизации сетевых запросов и фоновой активности. Высокие требования к производительности UI, выраженные в поддержании частоты 60 кадров в секунду, означают, что любая операция в главном потоке, занимающая больше 16 мс, приведет к пропуску кадров и "тормозам", что неприемлемо для пользователя.

Как тестировать Android приложение на разных этапах разработки?

Стратегия тестирования должна быть многоуровневой: юнит-тесты для проверки отдельной бизнес-логики, интеграционные тесты для взаимодействия модулей, и инструментальные (UI) тесты на устройстве/эмуляторе для проверки поведения интерфейса, с использованием JUnit, Espresso и UI Automator.

Юнит-тесты, выполняемые локально на JVM без Android-устройства, являются самым быстрым и дешевым видом тестирования, покрывая код, не зависящий от Android SDK. Для модулей, зависящих от Android, используются Mock-объекты с помощью библиотек вроде MockK или Mockito для эмуляции поведения Android-компонентов. Интеграционные тесты проверяют, как несколько модулей работают вместе, например, как ViewModel взаимодействует с Repository. Инструментальные тесты, запускаемые на реальном устройстве, самые медленные и дорогие, но они единственные, кто может проверить реальное отображение UI и взаимодействие пользователя. Выбирая мощь Espresso для написания детерминированных UI-тестов, мы жертвуем скоростью их исполнения и требуем предсказуемости состояния устройства перед запуском, что усложняет их настройку и поддержку.

> **Совет эксперта Алексея Корсуна**: Никогда не пишите логику внутри Activity или Fragment, которую нельзя протестировать локальным юнит-тестом. Если код требует Android-зависимостей для запуска — вынесите его в отдельный класс, который можно заменить mock-объектом. Это правило — краеугольный камень поддерживаемой кодовой базы.
Топ 20
Разработка мобильных приложений в Санкт-Петербурге (Рейтинг Рунета)
1 Место
Разработка мобильных приложений тематики Дом (Рейтинг Рунета)
Топ 5
Разработка мобильных приложений тематики Путешествия (Рейтинг Рунета)
Топ 30
Подрядчиков госструктур
(Рейтинг Рунета)
Мы занимаем лидирующие позиции на рынке мобильных приложений.

Как опубликовать приложение в Google Play Store?

Публикация в Google Play заключается в подготовке релизной сборки приложения, подписанной цифровым ключом, создании listing-страницы с описанием, иконками и скриншотами, настройке ценообразования и распространения, и последующей отправке на проверку командой модераторов Google.

Процесс начинается с регистрации аккаунта разработчика в Google Play Console, стоимость которого составляет единоразовый взнос в размере 25 долларов США (примерно 2300 рублей по текущему курсу). Критически важным этапом является генерация и безопасное хранение ключа для подписи приложения (upload key), так как его потеря делает невозможным обновление приложения в будущем. Listing-страница требует локализации на все языки целевых рынков, качественных графических материалов и продуманного описания, которое не только продает приложение, но и помогает в ASO. После загрузки Android App Bundle файла приложение отправляется на review, которое обычно длится от нескольких часов до нескольких дней и проверяет соответствие политикам Google Play. Основной компромисс публикации через Google Play заключается в получении доступа к миллиардам пользователей в обмен на строгое следование правилам магазина и комиссию в 15% или 30% с цифровых продаж.

Какие существуют альтернативы Google Play для распространения приложений?

Основными альтернативными каналами распространения являются сторонние магазины приложений (Amazon Appstore, Samsung Galaxy Store), прямое скачивание APK-файлов с вашего сайта и проприетарные корпоративные каталоги для распространения внутри компании.

Сторонние магазины, как правило, имеют свою собственную аудиторию и менее строгие, по сравнению с Google, процессы модерации, но они требуют адаптации приложения под их специфические требования и SDK. Прямое распространение через сайт дает полный контроль над процессом дистрибуции и позволяет избежать комиссий, но создает значительные барьеры для пользователя, который должен вручную разрешить установку из неизвестных источников, что многие воспринимают как небезопасное действие. Корпоративные каталоги идеальны для бизнес-приложений, но требуют развертывания и поддержки собственной инфраструктуры управления мобильными устройствами. Выбирая альтернативные магазины ради монетизации без комиссии Google, мы жертвуем охватом и доверием основной массы пользователей, привыкших к безопасности и удобству Google Play.

Под капотом: Малоизвестные нюансы ART и компиляции

1. Современная Android Runtime (ART) использует сложную гибридную стратегию компиляции: при установке приложения байт-код JVM компилируется в нативный код устройства (AOT-компиляция), но для экономии места на диске и увеличения скорости установки в последних версиях ОС используется компиляция в фоне и JIT-компиляция с профилированием "на лету".

2. Для объяснения работы сборщика мусора (Garbage Collector) в ART можно провести аналогию с уборкой в большом офисе. Ранние версии Dalvik VM использовали "Stop-the-World" сборку мусора — это как если бы все сотрудники разом встали и замерли, пока уборщики выносят мусор, вызывая заметные задержки в работе (лаги UI). Современный ART GC больше похож на слаженную команду клинеров, работающих параллельно с сотрудниками, они тихо и практически незаметно убирают мусор в фоновых комнатах (параллельные потоки), лишь изредка ненадолго прося одного сотрудника подвинуться (короткие паузы), что кардинально снижает impact на производительность.

3. Файлы Android App Bundle содержат скомпилированный код не для всех архитектур процессоров сразу, а лишь мета-информацию. Google Play выполняет "серверную компиляцию", генерируя и подписывая оптимизированный APK specifically для процессора и характеристик конкретного устройства пользователя, что экономит до 30% размера загружаемого файла.

4. Процесс под названием "dexopt" ответственен за оптимизацию DEX-файлов при установке. Он преобразует байт-код, предназначенный для интерпретации виртуальной машиной, в более эффективный для исполнения на конкретном процессоре формат, что ускоряет последующий запуск приложения.

5. Даже в эру Kotlin, знание тонкостей работы Java Virtual Machine (JVM) остается критически важным для решения сложных проблем производительности, так как и Kotlin, и Java компилируются в один и тот же байт-код, который затем исполняется и оптимизируется одной и той же виртуальной машиной ART.

> **Совет эксперта Алексея Корсуна**: Всегда используйте Android App Bundle вместо APK для публикации. Это не вопрос выбора, а необходимость. AAB позволяет Google Play генерировать оптимальные APK для каждого устройства, экономя трафик пользователей, место на их устройствах и значительно ускоряя загрузку. Отказ от AAB в 2024 году — сознательное ухудшение пользовательского опыта.

Сравнение фреймворков для кроссплатформенной разработки

Хотя нативное развитие остается золотым стандартом, кроссплатформенные решения набирают популярность для определенных типов проектов.

Параметр / Критерий Нативная разработка (Kotlin/Java) Flutter (Dart) React Native (JavaScript)
Производительность UI Максимальная. Прямой доступ к нативным компонентам и платформе. Высокая. Отрисовка собственным движком Skia, минуя системные компоненты. Зависит от моста. Может быть высокой, но возможны задержки из-за асинхронного обмена данными.
Доступ к нативным API Полный и прямой. Нулевые ограничения. Требует написания плагинов на Kotlin/Java/Swift для доступа к специфичным функциям. Требует написания нативных модулей или использования готовых библиотек.
Скорость разработки Стандартная. Требуется писать код для каждой платформы отдельно. Очень высокая. Горячая перезагрузка, единая кодовая база, богатые widgets. Высокая. Горячая перезагрузка, единая кодовая база, огромное сообщество.
Внешний вид и поведение 100% соответствие гайдлайнам Material Design и ожиданиям пользователей ОС. Собственный рендеринг. Внешний вид одинаков на всех ОС, но может отличаться от нативного. Использует нативные компоненты. Поведение близко к нативному, но могут быть нюансы.
Размер приложения Оптимальный. Зависит только от используемых библиотек и ресурсов. Большой. Включает в себя весь движок Dart и Flutter Framework. Средний. Включает в себя JavaScript-движок и нативные библиотеки.

Ключевые компоненты Android Jetpack

Jetpack — это набор библиотек, инструментов и архитектурных рекомендаций, призванный упростить разработку устойчивых и качественных приложений.

Компонент Категория Назначение
ViewModel Архитектура Хранение и управление UI-данными, связанными с жизненным циклом.
LiveData / StateFlow Архитектура Реактивные потоки данных с осведомленностью о жизненном цикле для наблюдения за изменениями.
Room Работа с данными Абстракция над SQLite, предоставляющая проверку на этапе компиляции и удобный API.
WorkManager Фоновые задачи Гарантированное выполнение отложенных и периодических фоновых задач.
Navigation UI Управление навигацией между фрагментами и обработка транзакций.
Hilt Внедрение зависимостей Стандартизированный способ внедрения зависимостей, упрощающий тестирование и модульность.
> **Совет эксперта Алексея Корсуна**: Не пытайтесь запомнить жизненный цикл по документации. Создайте простейшее приложение с одной Activity и переопределите все коллбеки, добавив в каждый Log-вывод. Затем понаблюдайте за логами при повороте экрана, сворачивании/разворачивании приложения и его закрытии. Мышечная память и визуальное наблюдение — лучшие учителя.