Оптимизируйте батарею вашего п... Заметка

Оптимизируйте батарею вашего приложения с помощью метрики Android vitals "wake lock"

Время работы от батареи имеет решающее значение для пользовательского опыта, и блокировки пробуждения существенно на него влияют. Чрезмерное использование частичных блокировок пробуждения теперь является ключевым показателем производительности в разделе "Android Vitals" в Google Play Console. Этот показатель отмечает приложения, которые удерживают неисключенные блокировки пробуждения в течение как минимум двух часов в течение 24 часов, что влияет на более чем 5% сеансов в течение 28 дней. Аудио, местоположение и API, инициированные JobScheduler, исключены из этого расчета.Блокировка пробуждения позволяет приложению поддерживать работу процессора устройства, когда оно не используется активно. Частичные блокировки пробуждения поддерживают активность процессора даже при выключенном экране, предотвращая переход в режимы низкого энергопотребления. Неправильное или чрезмерное использование блокировок пробуждения приводит к значительному расходу заряда батареи и жалобам пользователей. Прежде чем получать ручную частичную блокировку пробуждения, рассмотрите альтернативы, такие как документация "Keep Screen On" или существующие API.При ручном получении блокировок пробуждения используйте описательные, жестко закодированные строковые имена без личной информации или динамических элементов. Крайне важно всегда освобождать полученные блокировки пробуждения, чтобы предотвратить разряд батареи, используя блоки try-finally или тайм-ауты. Уменьшение частоты пробуждений с помощью таких методов, как WorkManager, пакетная обработка SensorManager или оптимизация использования Fused Location Provider, также может помочь сэкономить заряд батареи.Отладка чрезмерных блокировок пробуждения начинается с Play Console, которая разбивает имена блокировок пробуждения и затронутые сеансы. Для блокировок пробуждения, удерживаемых рабочими процессами, используйте Background Task Inspector в Android Studio или WorkInfo.getStopReason() для отладки в полевых условиях. Для других типов блокировок пробуждения рекомендуется сбор системных трассировок с помощью инструментов командной строки, Android Studio Profiler или Perfetto UI. Включение категории "power:PowerManagement" Atrace необходимо для просмотра соответствующих данных в системных трассировках.Perfetto UI позволяет визуально проверять срезы блокировок пробуждения на временной шкале, а SQL-анализ может эффективно выявлять основных виновников чрезмерного использования в нескольких трассировках. Для трудновоспроизводимых проблем ProfilingManager (SDK 35+) обеспечивает программное управление сбором системных трассировок в полевых условиях. Правильное понимание и реализация блокировок пробуждения, соблюдение лучших практик и использование инструментов отладки являются ключом к оптимизации производительности батареи приложения.