Экономьте электроэнергию и батарею

Ключевые слова: Wearos, мощность, аккумулятор, производительность.

Энергоэффективность особенно важна для Wear OS. Принципы проектирования Wear OS в значительной степени ориентированы на энергопотребление устройства, поскольку часы имеют небольшой форм-фактор и предназначены для коротких взаимодействий.

По сравнению с более крупными мобильными устройствами устройства Wear OS имеют аккумуляторы меньшего размера, поэтому любой разряд батареи более заметен. Кроме того, пользователю требуется больше усилий для зарядки устройства Wear OS по сравнению с мобильным устройством. Хотя пользователи могут заряжать свои мобильные устройства с различными интервалами в течение дня, им необходимо отсоединить устройство Wear OS от тела, прежде чем заряжать его.

Чтобы повысить энергоэффективность вашего приложения, следуйте этим рекомендациям по проектированию:

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

    Если устройство заряжается и подключено к Wi-Fi, запланируйте задания для предварительной загрузки данных, изображений и обновлений, которые пользователь, скорее всего, захочет видеть в вашем приложении.

Это руководство поможет вам понять, когда и как система запускает ваше приложение, а также как вы можете ограничить время работы вашего приложения и расход заряда батареи. Чтобы узнать больше о том, как выполняются определенные действия, например загрузка приложения или прокрутка списка, посетите руководство, связанное с производительностью, например руководство по производительности Compose on Wear OS .

Мониторинг использования батареи с течением времени

Чтобы проанализировать статистику заряда батареи устройства Wear OS, на котором работает ваше приложение, введите следующую команду в окне терминала на вашем компьютере разработки:

adb shell dumpsys batterystats

В библиотеке на GitHub есть анализатор статистики батареи , который может быть полезен для запуска вместе с этой командой.

События, влияющие на срок службы батареи

Прежде чем думать о вашем приложении конкретно, стоит подумать в более общем плане о событиях, которые потребляют энергию на устройстве Wear OS.

В следующей таблице показано относительное влияние на время автономной работы нескольких распространенных событий в приложениях Wear OS. Точная потребляемая мощность варьируется в зависимости от устройства.

Событие Влияние на срок службы батареи Как смягчить
Доступ к сети, включая LTE и Wi-Fi Очень высокий Отложите второстепенный доступ к сети до тех пор, пока устройство не начнет заряжаться.
Включите экран и запустите интерактивный режим. Высокий Не поощряйте пользователя держать экран включенным дольше, чем это необходимо. Обеспечьте взаимодействие с использованием постоянно включенного режима , также известного как окружающий режим.
Доступ к GPS-датчику Высокий Если возможно, подождите, пока пользователь запросит доступ к GPS.
Поддерживайте высокую загрузку ЦП Высокий Потребляйте потоки с помощью Jetpack Compose .
Доступ к датчику сердечного ритма Середина Используйте время пробуждения процессора при получении обратных вызовов от API датчика, например при использовании Health Services в Wear OS .
Доступ к другому устройству через Bluetooth Середина Делайте сеансы короткими.
Удерживайте вейклок Середина Сократите создание вейклоков вручную и используйте WorkManager .

Минимизируйте время работы экрана

В приложении Wear OS следуйте следующим принципам использования экрана:

  • Блокировка экрана: избегайте ее, когда это возможно. Чтобы проверить, отключите «Всегда включенный дисплей» в настройках системы и посмотрите, гаснет ли экран в течение тайм-аута.
  • Анимации: сведите к минимуму сложные анимации и вместо этого сосредоточьтесь на коротких переходах для более профессионального вида. В частности, избегайте длительных анимаций и циклов. Если требуется цикл, добавьте паузу между циклами, длительностью не менее самой анимации.
  • Время бодрствования в обычном режиме: поддержка постоянного включения при необходимости, например, в случаях использования в фитнесе. Если ваше приложение требует постоянного включения, убедитесь, что оно выполняет следующие действия, когда устройство находится в режиме окружающей среды :

    • Уменьшает процент освещенности экрана устройства.
    • Не показывает анимацию.
    • Не обновляет содержимое экрана, за исключением обратного вызова onAmbientUpdate() .

Минимизируйте использование процессора

В приложении Wear OS следуйте следующим принципам использования ЦП:

  • Используйте короткое время.
  • Пакетируйте все связанные операции, чтобы максимально увеличить время простоя процесса вашего приложения.

Минимизировать пробуксовки

В большинстве случаев избегайте любых операций, которые не позволяют вашему приложению переходить в спящий режим, например, Wakelocks . Например, в приложениях для здоровья и фитнеса для длительных тренировок не требуется блокировка пробуждения. Используйте время пробуждения процессора при получении обратных вызовов от API датчика, например при использовании Health Services в Wear OS .

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

  • Воспроизводит мультимедиа в фоновом режиме.
  • Использует WorkManager или JobScheduler . (Система удерживает блокировку от вашего имени при выполнении задания в фоновом режиме.)

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

  • Проверьте наличие неожиданных вейклоков.
  • Если продолжительность больше ожидаемой, подумайте, не заблокирована ли работа по какой-либо зависимости, например доступности сети.

Проверьте, как ваше приложение становится неактивным

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

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

Для анализа активности приложения используйте инструменты, показанные в следующих разделах.

Профилировщик мощности

Power Profiler доступен в меню Android Studio, выбрав «Вид» > «Окна инструментов» > «Профилировщик» :

  1. Проверьте системную трассировку, когда экран гаснет и устройство переходит в режим окружающей среды.
  2. Обратите внимание на любую продолжающуюся работу и уровень использования ЦП устройства.

Перфетто

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

Определите пользовательские события , чтобы отметить важные события вашего приложения, включая события, специфичные для домена. Для мультимедийного приложения это будет включать в себя такие задачи, как получение списков воспроизведения, загрузка определенного мультимедийного элемента, запуск и остановка воспроизведения. Определив эти события, вы сможете увидеть их в Perfetto и сравнить их время с загрузкой ЦП и энергопотреблением вашего приложения.

Анализируйте запланированные задания вашего приложения

Запланированные задания с использованием WorkManager позволяют выполнять фоновую работу в вашем приложении. Хотя некоторые фоновые работы должны выполняться периодически, не запускайте задания слишком часто или на длительный срок, поскольку это может привести к разрядке аккумулятора устройства.

Используйте Battery Historian для проверки выполнения запланированных заданий как в целом ( «Статистика системы» > «Статистика планировщика заданий» ), так и по приложениям ( «Статистика приложения» > «Запланированное задание» ). Проверьте общее количество и общую продолжительность:

  • Если задание выполняется очень часто, рассмотрите возможность уменьшения этой частоты.
  • Убедитесь, что общее время выполнения соответствует ожидаемому и не превышает его значительно.

Кроме того, проверьте график Battery Historian, просматривая каждую запись JobScheduler . Когда вы наводите указатель на определенную запись, Battery Historian показывает владельца выполняемого задания. Учтите следующее:

  • Для вашего приложения длительность выполнения должна иметь смысл.
  • Учитывайте, выполняются ли задания во время работы вашего приложения или они представляют собой периодическую фоновую работу.

Датчики

Устройства Wear OS оснащены множеством различных датчиков, например GPS. В большинстве случаев используйте Health Services в Wear OS вместо прямого взаимодействия с SensorManager . Во многих случаях Службы здравоохранения интеллектуально группируют данные для повышения производительности батареи.

Чтобы проанализировать использование датчиков в вашем приложении, выполните следующую команду в окне терминала на вашем компьютере разработки:

adb shell dumpsys sensorservice

Результаты этой команды показывают следующее:

  • Текущая и предыдущая регистрация датчиков.
  • Конфигурация датчика, включая дозирование, если оно установлено.
  • Недавно выбранные данные.

Тестовая отмена регистрации от датчиков

Чтобы проверить, перестает ли ваше приложение получать данные датчиков должным образом, протестируйте следующие сценарии:

  1. Проведите пальцем по экрану и закройте приложение.
  2. Коснитесь экрана ладонью. Это либо выключает экран, либо переводит его в режим окружающей среды.

Используйте команду ADB из предыдущего раздела, чтобы проверить, правильно ли датчик отображается как незарегистрированный.

Уровень данных

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

Некоторые дополнительные рекомендации по использованию API уровня данных включают следующее:

  • Прежде чем настраивать прослушиватель с помощью WearableListenerService , подождите, пока ваше приложение станет активным.
  • Передавайте изменения состояния вместо настройки быстрых обновлений. Эти изменения состояния позволяют устройству Wear OS выполнять вычисления локальных данных, например, когда началась тренировка.

    Передавайте только те изменения состояния, которые обновляют ваш пользовательский интерфейс. Например, если на экране активности отображается только «пройденные километры» с точностью до одного десятичного знака, не отправляйте изменение состояния в Wear OS каждый раз, когда пользователь перемещается еще на один метр вперед.

Чтобы проанализировать использование Data Layer API в вашем приложении, выполните следующую команду в окне терминала на вашем компьютере разработки:

adb shell dumpsys activity service WearableService

Результаты этой команды включают следующее:

  • RpcService: позволяет увидеть, как часто и какие пути вызываются с помощью MessageClient .
  • DataService: позволяет увидеть, как часто элементы данных задаются с помощью DataClient .

Приложения для здоровья и фитнеса

Если у вас есть приложение для здоровья и фитнеса, используйте Health Services , чтобы оптимизировать использование датчиков в вашем приложении.

  • Для ExerciseClient используйте Battery Historian , чтобы проверить правильность поведения в окружающем режиме. Убедитесь, что ваше приложение не просыпается чаще, чем раз в минуту или две, чтобы получить данные ExerciseUpdate .
  • Для круглосуточного общего мониторинга состояния здоровья используйте PassiveMonitoringClient , как описано в руководстве по мониторингу данных о здоровье и фитнесе в фоновом режиме .

Плитка и осложнения

Если ваше приложение поддерживает плитку или усложнение , следуйте этим рекомендациям:

  • Отключите автоматическое обновление или увеличьте частоту обновления до 2 часов или дольше.
  • Используйте Firebase Cloud Messaging (FCM) или соответствующим образом запланированные задания для отправки обновлений данных. Позаботьтесь о том, чтобы предотвратить высокую скорость обновлений, поскольку это может привести к тому, что система будет планировать повторную работу с большей скоростью, чем пользователь или платформа смогут получить доступ к данным, необходимым для выполнения этой работы.
  • Не планируйте работу для плитки или сложности, когда пользователь с ней не взаимодействует.
  • Используйте подходы, ориентированные на оффлайн .
  • Используйте единую базу данных для основного приложения, плиток и расширений. Это также помогает данным оставаться согласованными на всех поверхностях пользовательского интерфейса.
{% дословно %} {% дословно %} {% дословно %} {% дословно %}