Задержка при запуске — важный показатель, позволяющий удерживать ежедневных активных пользователей и обеспечивать удобство работы с пользователем с первого взаимодействия. Это особенно актуально в средах с низким объемом оперативной памяти, где можно рассмотреть компромисс с производительностью. Однако прежде чем приступить к улучшению запуска приложений, важно понять основные аспекты, которые способствуют самому запуску.
Лучшие практики
Отправка с базовым профилем
Базовые профили повышают скорость выполнения кода примерно на 30 % с момента первого запуска за счет исключения этапов интерпретации и JIT- компиляции для включенных путей кода. Помещая базовый профиль в приложение, среда выполнения Android (ART) может оптимизировать включенные пути кода посредством предварительной компиляции (AOT), обеспечивая повышение производительности для каждого нового пользователя и при каждом обновлении приложения.
Избегайте нетерпеливой инициализации
Избегайте неторопливой работы, которая может оказаться ненужной в последовательности запуска вашего приложения. Наиболее вероятный сценарий запуска процесса вашего приложения — запуск приложения. Однако WorkManager , JobScheduler , BroadcastReceiver , привязанные службы и библиотека запуска AndroidX также могут запускать процессы приложения в фоновом режиме. Если возможно, избегайте излишней инициализации чего-либо в классе Application
. Многие библиотеки предлагают инициализацию по требованию, что позволяет вызывать их только при необходимости.
Перемещение задач из потока пользовательского интерфейса в фоновый поток.
Если есть задачи, которые занимают больше времени и блокируют основной поток, переместите их в фоновый поток или используйте WorkManager для обеспечения эффективности. Определите операции, которые занимают большие временные рамки или требуют больше времени, чем ожидалось. Оптимизация этих задач может помочь значительно сократить задержку при запуске.
Анализ и устранение серьезных конфликтов чтения диска
StrictMode — это инструмент разработчика, который может помочь обнаружить использование случайного доступа к диску или сети в основном потоке приложения, где принимаются операции пользовательского интерфейса и происходит анимация. Как только инструмент обнаружит возможную область улучшения, вы можете автоматически закрыть приложение или зарегистрировать нарушение для дальнейшей проверки позже.
Избегайте синхронных IPC
Часто длительные паузы в выполнении вашего приложения вызваны вызовами связывателя — механизма межпроцессного взаимодействия (IPC) в Android. В последних версиях Android это одна из наиболее распространенных причин прекращения работы потока пользовательского интерфейса. Как правило, исправление заключается в том, чтобы избегать вызова функций, которые выполняют вызовы связующих; если это неизбежно, вам следует кэшировать значение или перенести работу в фоновые потоки. Дополнительные сведения см. в разделе Задержки планирования потоков .