Анализируйте энергопотребление с помощью Battery Historian

Инструмент Battery Historian дает представление о расходе заряда батареи устройства с течением времени. На общесистемном уровне инструмент визуализирует события, связанные с питанием, из системных журналов в HTML-представлении. На уровне конкретного приложения инструмент предоставляет различные данные, которые могут помочь вам определить поведение приложения, разряжающего батарею.

В этом документе описаны некоторые способы использования Battery Historian для изучения моделей потребления батареи. Документ начинается с объяснения того, как читать общесистемные данные, которые сообщает Battery Historian. Затем в нем представлены способы использования Battery Historian для диагностики и устранения неполадок в поведении вашего приложения, связанном с расходом заряда батареи. Наконец, он предлагает несколько советов по сценариям, в которых Battery Historian может быть особенно полезен.

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

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

Отображение общесистемных событий, влияющих на энергопотребление, в Battery Historian.
Рисунок 1. Отображение общесистемных событий, влияющих на энергопотребление, в Battery Historian.

Особый интерес на этом рисунке представляет черная горизонтальная нисходящая линия тренда, показывающая уровень заряда батареи, измеренный по оси Y. Например, в самом начале строки «Уровень заряда батареи», примерно в 6:50 утра, визуализация показывает относительно резкое падение уровня заряда батареи.

На рис. 2 показан крупный план этой части дисплея.

Крупный план временной шкалы Battery Historian примерно с 6:50 до 7:20 утра.
Рисунок 2. Крупный план временной шкалы Battery Historian примерно с 6:50 до 7:20 утра.

В самом начале строки «Уровень заряда батареи», когда заряд батареи резко снижается, на дисплее отображаются три события: процессор работает, приложение получило функцию блокировки и экран включен. Таким образом, Battery Historian помогает понять, какие события происходят при высоком расходе заряда батареи. Затем вы можете настроить эти поведения в своем приложении и выяснить, можно ли провести соответствующую оптимизацию.

Общесистемная визуализация может дать и другие подсказки. Например, если он показывает, что мобильное радио часто выключается и включается, может быть возможность оптимизировать это поведение с помощью API-интерфейсов интеллектуального планирования , таких как JobScheduler или Firebase Job Dispatcher.

В следующем разделе объясняется, как исследовать поведение и события, характерные для вашего собственного приложения.

Просмотр данных по конкретному приложению

В дополнение к данным макроуровня, предоставляемым общесистемным представлением, Battery Historian также предоставляет таблицы и некоторую визуализацию данных, специфичных для каждого приложения, работающего на вашем устройстве. Табличные данные включают в себя:

  • Примерное энергопотребление приложения на устройстве.
  • Информация о сети.
  • Вейклоки.
  • Услуги.
  • Информация о процессе.

В таблицах представлены два измерения данных о вашем приложении. Во-первых, вы можете посмотреть, какое место занимает ваше приложение по энергопотреблению по сравнению с другими приложениями. Для этого щелкните таблицу «Оценка мощности устройства» в разделе «Таблицы» . В этом примере рассматривается вымышленное приложение под названием Pug Power.

Выясняем, какие приложения потребляют больше всего энергии.
Рисунок 3. Исследование того, какие приложения потребляют больше всего энергии.

Таблица на рисунке 3 показывает, что Pug Power является девятым по величине потребителем энергии аккумулятора на этом устройстве и третьим по величине приложением, не являющимся частью ОС. Эти данные свидетельствуют о том, что это приложение требует более глубокого изучения.

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

Ввод конкретного приложения, данные которого нужно просмотреть.
Рисунок 4. Вход в конкретное приложение, данные которого нужно просмотреть.

Когда вы выбираете конкретное приложение, следующие категории визуализации данных изменяются для отображения данных конкретного приложения, а не общесистемных данных:

  • СинкМенеджер.
  • Процесс переднего плана.
  • Пользовательское пространство Wakelock.
  • Топовое приложение.
  • Планировщик заданий.
  • Менеджер активности Proc.

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

Вы также можете получить еще одну часть данных визуализации для конкретного приложения — Userspace Wakelock . Чтобы включить эту информацию в отчет об ошибке, введите следующую команду в окне терминала:

$ adb shell dumpsys batterystats --enable full-wake-history

На рисунках 5 и 6 показаны данные для Pug Power: на рисунке 5 показана визуализация данных конкретного приложения, а на рисунке 6 показаны соответствующие табличные данные.

Визуализация данных для вымышленного приложения Pug Power.
Рисунок 5. Визуализация данных для вымышленного приложения Pug Power.


Табличные данные для вымышленного приложения Pug Power.

Рисунок 6. Табличные данные для вымышленного приложения Pug Power.

Взгляд на визуализацию не показывает ничего очевидного. Строка JobScheduler показывает, что у приложения нет запланированных заданий. Строка SyncManager показывает, что приложение не выполняло синхронизацию.

Однако изучение сегмента Wakelocks табличных данных показывает, что Pug Power получает вейклок общей продолжительностью более часа. Такое необычное и дорогостоящее поведение может стать причиной высокого уровня энергопотребления приложения. Эта информация помогает разработчику нацелиться на ту область, где оптимизация может очень помочь. В этом случае, почему приложение тратит так много времени на пробуждение и как разработчик может улучшить это поведение?

Другие случаи, когда Battery Historian может помочь

Существует множество других случаев, когда Battery Historian может помочь вам диагностировать возможности улучшения поведения батареи. Например, Battery Historian может сообщить вам, является ли ваше приложение:

  • Слишком частые срабатывания будильника (каждые 10 секунд или меньше).
  • Постоянно держит блокировку GPS.
  • Планирование заданий каждые 30 секунд или меньше.
  • Расписание синхронизируется каждые 30 секунд или меньше.
  • Использование сотовой связи чаще, чем вы ожидаете.