Рекомендации по оптимизации приложений

Следующие рекомендации помогут оптимизировать ваше приложение без ущерба для качества.

Используйте базовые профили

Базовые профили могут повысить скорость выполнения кода на 30 % с момента первого запуска и сделать все взаимодействия с пользователем, такие как запуск приложения, навигация между экранами или прокрутка контента, более плавными с первого запуска. Увеличение скорости и оперативности приложения приводит к увеличению количества ежедневных активных пользователей и более высокому среднему показателю повторных посещений.

Используйте стартовый профиль

Профиль запуска аналогичен базовому профилю, но он запускается во время компиляции, чтобы оптимизировать макет DEX для более быстрого запуска приложения.

Используйте библиотеку запуска приложений

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

Лениво загружать библиотеки или отключать автоинициализацию

Приложения используют множество библиотек, некоторые из которых могут быть обязательными для запуска. Однако может существовать множество библиотек, в которых инициализация может быть отложена до тех пор, пока не будет отрисован первый кадр. В некоторых библиотеках есть возможность отключить автоматическую инициализацию при запуске или выполнить инициализацию по требованию. Используйте эту опцию, чтобы отложить инициализацию до тех пор, пока она не понадобится для повышения производительности. Например, вы можете использовать инициализацию по требованию, чтобы вызывать WorkManager только тогда, когда компонент необходим.

Используйте ViewStubs

ViewStub — это невидимое View нулевого размера, которое можно использовать для ленивого увеличения ресурсов макета во время выполнения. Это позволяет отложить раздувание представлений, которые не нужны при запуске, на более позднее время.

Если вы используете Jetpack Compose, вы можете получить поведение, аналогичное ViewStub , используя состояние для отсрочки загрузки некоторых компонентов:

var shouldLoad by remember {mutableStateOf(false)}

if (shouldLoad) {
   MyComposable()
}

Загрузите составные элементы внутри условного блока, изменив shouldLoad :

LaunchedEffect(Unit) {
   shouldLoad = true
}

Это запускает рекомпозицию, включающую код внутри условного блока в первом фрагменте.

Оптимизируйте заставку

Экраны-заставки — это важная часть запуска приложения, и использование хорошо продуманного экрана-заставки может помочь улучшить общий процесс запуска приложения. Android 12 (уровень API 31) и более поздних версий включает заставку, предназначенную для повышения производительности. Дополнительную информацию см. в разделе «Заставка» .

Используйте масштабируемые типы изображений

Мы рекомендуем использовать векторные рисунки для изображений. Там, где это невозможно, используйте изображения WebP . WebP — это формат изображений, который обеспечивает превосходное сжатие изображений в Интернете без потерь и с потерями. Вы можете конвертировать существующие изображения BMP, JPG, PNG или статические GIF в формат WebP с помощью Android Studio. Дополнительные сведения см. в разделе Создание изображений WebP .

Кроме того, минимизируйте количество и размер изображений, загружаемых во время запуска.

Используйте API производительности

API производительности для воспроизведения мультимедиа доступен в Android 12 (уровень API 31) и более поздних версиях. Вы можете использовать этот API, чтобы понять возможности устройства и выполнить соответствующие операции.

Приоритезация трассировки холодного запуска

Холодный старт означает запуск приложения с нуля. Это означает, что системный процесс еще не создает процесс приложения. Ваше приложение обычно запускается в холодном режиме, если вы запускаете его впервые после загрузки устройства или после того, как система принудительно остановила приложение. Холодный запуск происходит намного медленнее, поскольку приложение и система должны выполнять больше работы, которая не требуется при других типах запуска, например теплый и горячий запуск. Система отслеживания холодных запусков позволяет лучше контролировать производительность приложений.

{% дословно %} {% дословно %} {% дословно %} {% дословно %}