Что такое Zygote и зачем он нужен?Zygote создаёт процессы с подготовленной средой выполнения и общими загруженными данными. Помимо fork по запросу возможен пул заранее созданных USAP. Поэтому «система выделила процесс» не всегда равно «fork выполнен после нажатия на иконку». AOSP: Zygote.
Чем холодный старт отличается от тёплого и горячего?Холодный старт включает инициализацию процесса и Activity. Типичный тёплый — новая Activity при живом процессе; руководство описывает и восстановление с saved state после выгрузки. Горячий возвращает существующий экран. Для benchmark указывайте конкретные предусловия, а не только название категории. Startup states.
Что вызывается раньше: Application.onCreate() или ContentProvider.onCreate()?При обычной установке провайдеров текущего процесса — ContentProvider.onCreate, затем Application.onCreate. Это не обещание, что любой провайдер в любом процессе всегда уже готов: учитывайте direct boot и доступность компонентов. Application.onCreate, App Startup.
Как измерить время старта?Повторяемый Macrobenchmark со StartupTimingMetric: отдельно TTID и TTFD, при необходимости reportFullyDrawn. По трассе исследуют вклад этапов. Одиночный ручной запуск не доказывает ускорение; важны одинаковые устройство, сценарий и режим компиляции. Macrobenchmark metrics.
Может ли процесс приложения запуститься без Activity?Да: процесс может потребоваться service, receiver или provider. Это зависит от допустимости запуска компонента и ограничений Android. Инициализация Application относится к процессу, а не исключительно к показу Activity; отдельный процесс имеет свой экземпляр Application. Application.
Холодный старт занимает 3 секунды. С чего начнёте?Сначала уточнить, что заняло три секунды: первый кадр или готовность содержимого. Затем повторяемый замер и трасса: инициализация SDK/провайдеров, I/O, создание первого UI. Менять по одной причине и снова измерять. Наличие Baseline Profile само по себе не доказывает, что bottleneck устранён. Startup diagnostics, Macrobenchmark.