Маршрут

  1. 1Lifecycle и Compose
  2. 2Корутины и данные
  3. 3Фон и JNI
  4. 4Трассы и KMP
ЭтапЧто получится
Lifecycle и ComposeВосстанавливать состояние после уничтожения процесса
Корутины и данныеПроектировать отмену задач и offline-first данные
Фон и JNIВыбирать платформенный механизм работы
Трассы и KMPИзмерять сценарии и выделять общую логику

Нативная основа и Compose

Android Basics with Compose

системный официальный курс

Для человека с опытом программирования самый полезный участок — Units 4–7: архитектура и навигация, жизненный цикл, сеть и корутины, Room/DataStore, фоновая работа. Начальную часть можно проходить быстрее. Хорошая опора, чтобы понимать нативную сторону приложения и не воспринимать Android как просто место, куда устанавливается APK.

№ 36★ Начните здесь

Now in Android

основной репозиторий для чтения современного Android-кода

Официальное приложение-образец на Kotlin/Compose с материалами об архитектуре, модульности и тестировании. Особенно полезно смотреть, как решения сочетаются в одном проекте. Но это учебный ориентир определённого масштаба: не стоит переносить всю его модульную структуру в приложение из двух экранов.

№ 37★ Начните здесь

Activity Lifecycle + Saving UI States

восстановление приложения

Отличие изменения конфигурации от уничтожения процесса; что сохраняет ViewModel, что нужно восстановить отдельно, а что должно лежать в постоянном хранилище. Главный вопрос: что увидит пользователь, когда система убьёт процесс, а потом он вернётся? Это полезная проверка архитектуры независимо от выбранного UI-фреймворка.

Thinking in Compose + Compose Phases

механика декларативного UI

Рекомпозиция, повторное выполнение функций и стадии composition/layout/drawing. Материал полезен не только будущему Android-разработчику: сопоставьте его с Inside Flutter и QML bindings. Сходство идей помогает, но различия механизмов тоже важны — правила одного фреймворка нельзя автоматически переносить в другой.

Kotlin Coroutines Guide + Android Best Practices

асинхронность с жизненным циклом

Structured concurrency, cancellation, обработка ошибок, Flow, выбор scope и подмена dispatchers в тестах. Самое полезное — не синтаксис launch, а понимание владельца задачи: кто должен её отменить, где живёт результат и что происходит при закрытии экрана. Это хорошая пара к разделу про Dart concurrency.

Данные, фоновые задачи и JNI

№ 38★ Начните здесь

Build an Offline-First App

один из лучших прикладных архитектурных разборов в подборке

Локальный источник данных, синхронизация, очереди записи, повторные попытки и разрешение конфликтов. Хотя примеры Android-специфичны, сами вопросы и принципы можно переносить на Flutter/Qt. Здесь объясняется не только «закэшируй ответ», а поведение приложения при нестабильной связи и расходящихся версиях данных.

Background Tasks

как выбирать механизм фоновой работы

Раздел помогает отличать обычную асинхронную работу от задач, для которых нужны платформенные механизмы вроде WorkManager или foreground service. Ни Dart isolate, ни QThread сами по себе не гарантируют выполнение после уничтожения процесса. Для загрузок, синхронизации и длительных операций это принципиально важнее выбора state manager.

№ 42★ Начните здесь

JNI Tips

особенно полезно для Qt и собственного native-кода

JNIEnv и потоки, local/global references, исключения, строки и стоимость переходов между языками. Например, JNIEnv нельзя просто передавать между потоками как универсальный общий контекст. Очень плотный документ: помогает не только исправлять падения, но и проектировать более простой и дешёвый интерфейс между C++ и Java/Kotlin.

Производительность и общий код

Perfetto: Android Tracing

системный взгляд на производительность

Запись и анализ трасс Android: активность потоков, планирование и взаимосвязь событий. Особенно полезно, когда внутрифреймворковый профайлер показывает задержку, но не объясняет всю картину. Для SRE-подхода это естественный материал: смотреть, где реально потрачено время, а не объявлять медленной библиотеку по ощущениям.

Macrobenchmark + Baseline Profiles

измерять пользовательские сценарии

Старт приложения, прокрутка и воспроизводимые измерения; затем профили, помогающие ART заранее компилировать нужные пути. Важно разделять инструменты: Baseline Profiles относятся к коду, выполняемому ART, а не напрямую ускоряют Dart AOT или Qt/C++. Полезный материал для нативной части и понимания Android runtime.

Kotlin Multiplatform: официальный Android-раздел

другой способ разделять код между платформами

Брать для понимания shared-модулей, доступных библиотек и добавления общей логики в Android/iOS-проект. Важный архитектурный вопрос: что именно должно быть общим — данные и бизнес-логика или ещё и UI? Этот вариант лучше изучать после знакомства с Android, а не одновременно с первым Flutter-приложением.

Дальше

Вернитесь к карте направлений, чтобы выбрать следующий шаг.