Следующие рекомендации помогут оптимизировать ваше приложение без ущерба для качества.
Используйте базовые профили.
Базовые профили могут повысить скорость выполнения кода на 30% с момента первого запуска и сделать все взаимодействия с пользователем — такие как запуск приложения, навигация между экранами или прокрутка контента — более плавными с первого же запуска. Повышение скорости и отзывчивости приложения приводит к увеличению числа ежедневно активных пользователей и повышению среднего показателя повторных посещений.
Используйте профиль запуска
Профиль запуска похож на базовый профиль, но он запускается во время компиляции для оптимизации структуры DEX-редактора и ускорения запуска приложения.
Воспользуйтесь библиотекой запуска приложений.
Библиотека App Startup позволяет определять инициализаторы компонентов, использующие один и тот же поставщик контента, вместо того, чтобы определять отдельные поставщики контента для каждого компонента, который необходимо инициализировать. Это может значительно сократить время запуска приложения.
Ленивая загрузка библиотек или отключение автоматической инициализации
Приложения используют множество библиотек, некоторые из которых могут быть обязательными для запуска. Однако во многих библиотеках инициализация может быть отложена до отрисовки первого кадра. Некоторые библиотеки имеют опцию отключения автоматической инициализации при запуске или инициализации по запросу. Используйте эту опцию, чтобы отложить инициализацию до момента, когда она необходима, для повышения производительности. Например, вы можете использовать инициализацию по запросу , чтобы вызывать WorkManager только тогда, когда компонент необходим.
Используйте состояние в составных объектах.
Состояние — это любые данные, которые могут изменяться со временем и определяют, что отображает ваш пользовательский интерфейс или как он себя ведет. Поскольку Compose — декларативный инструмент, экран не обновляется автоматически, если пользовательский интерфейс явно не отслеживает и не реагирует на изменения состояния.
Рассмотрите возможность использования условной композиции для отложенной загрузки тех частей пользовательского интерфейса, которые не сразу видны при запуске, таких как экраны ошибок, необязательные сведения или дополнительные вкладки. Обернув ресурсоемкие компоненты простой проверкой состояния, вы избегаете выполнения их логики композиции в критически важный момент запуска, сохраняя при этом легковесность первоначальной компоновки.
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, чтобы понять возможности устройства и выполнять соответствующие операции.
Приоритизация трассировок холодного запуска
Холодный запуск — это запуск приложения с нуля, то есть системный процесс ещё не создал процесс приложения. Приложение обычно запускается «холодным» способом при первом запуске после загрузки устройства или после принудительной остановки приложения системой. Холодные запуски намного медленнее, потому что приложению и системе приходится выполнять больше работы, которая не требуется при других типах запуска — таких как тёплый и горячий запуск. Трассировка системы при холодных запусках даёт вам лучшее представление о производительности приложения.
{% verbatim %}Рекомендуем вам
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Анализ и оптимизация запуска приложения
- время запуска приложения
- Застывшие кадры