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

Энергоэффективность особенно важна для 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 позволяет просматривать отдельные случаи длительных вейклоков, а также сводные данные об общем количестве и продолжительности удерживаемых вейклоков. Проверьте количество и длительность пробуксовок, которые поддерживает ваше приложение, и сравните эту информацию с интерактивными моделями использования вашего приложения:

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

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

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

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

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

Энергетический профилировщик

Доступ к Energy 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) или соответствующим образом запланированные задания для отправки обновлений данных. Позаботьтесь о том, чтобы предотвратить высокую скорость обновлений, поскольку это может привести к тому, что система будет планировать повторную работу с большей скоростью, чем пользователь или платформа смогут получить доступ к данным, необходимым для выполнения этой работы.
  • Не планируйте работу для плитки или сложности, когда пользователь с ней не взаимодействует.
  • Используйте подходы, ориентированные на оффлайн .
  • Используйте единую базу данных для основного приложения, плиток и расширений. Это также помогает данным оставаться согласованными на всех поверхностях пользовательского интерфейса.
{% дословно %} {% дословно %} {% дословно %} {% дословно %}