Энергоэффективность особенно важна для 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 датчика, например, при использовании служб здравоохранения на Wear OS . |
Доступ к другому устройству через Bluetooth | Середина | Проводите короткие сессии. |
Удерживайте вейклок | Середина | Сократите ручное создание wakelock-ов и используйте WorkManager . |
Минимизируйте время использования экрана
В приложении Wear OS следуйте следующим принципам использования экрана:
- Блокировки экрана: Избегайте, когда это возможно. Чтобы проверить, отключите функцию Always-on display в системных настройках и посмотрите, выключается ли экран в течение периода ожидания.
- Анимации: Минимизируйте сложные анимации и вместо этого сосредоточьтесь на коротких переходах для более профессионального вида. В частности, избегайте длительных анимаций и циклов. Если требуется цикл, добавьте паузу между циклами, которая должна быть как минимум такой же длительной, как и сама анимация.
- Время бодрствования в режиме Ambient: поддержка постоянного включения при необходимости, например, для фитнес-кейсов. Если ваше приложение требует постоянного включения, следуйте этим рекомендациям для режима Ambient .
Минимизируйте использование ЦП
В приложении Wear OS следуйте следующим принципам использования ЦП:
- Используйте его кратко.
- Объединяйте все связанные операции в пакеты, чтобы максимально увеличить время простоя процесса вашего приложения.
Минимизировать пробуждения
В большинстве случаев избегайте любых операций, которые не позволяют вашему приложению спать, таких как wakelocks . Например, в приложениях для здоровья и фитнеса длительные тренировки не нуждаются в wakelock. Используйте время пробуждения процессора при получении обратных вызовов от API датчика, например, при использовании Health Services на Wear OS .
В некоторых случаях допустимо применять wakelock, например, когда ваше приложение выполняет одно из следующих действий:
- Воспроизводит медиа в фоновом режиме.
- Использует
WorkManager
илиJobScheduler
. (Система удерживает wakelock от вашего имени при запуске задания в фоновом режиме.)
Battery Historian позволяет вам видеть отдельные случаи длительных wakelocks, а также сводки общего количества и продолжительности удерживаемых wakelocks. Проверьте количество и продолжительность wakelocks, удерживаемых вашим приложением, и сравните эту информацию с интерактивными шаблонами использования вашего приложения:
- Проверьте наличие неожиданных блокировок сна.
- Если продолжительность больше ожидаемой, рассмотрите возможность блокировки работы из-за какой-либо зависимости, например доступности сети.
Проверьте, как ваше приложение становится неактивным
Подумайте, что делает активное приложение, когда происходят ключевые события устройства, например следующие:
- Экран гаснет, и устройство переходит в режим Ambient Mode.
Приложение закрывается свайпом .
Для анализа активности приложения используйте инструменты, представленные в следующих разделах.
Профилировщик мощности
Power Profiler доступен в меню Android Studio, если выбрать Вид > Окна инструментов > Профилировщик :
- Проверьте трассировку системы, когда экран погаснет и устройство перейдет в режим Ambient Mode.
- Обратите внимание на продолжающуюся работу и уровень загрузки ЦП устройства.
Perfetto
Perfetto позволяет вам записывать трассировку, а затем проверять ваше приложение, чтобы увидеть, есть ли какие-либо потоки, выполняющие какую-либо работу, когда экран выключается, устройство переходит в режим Ambient Mode или пользователь закрывает активность вашего приложения.
Определите пользовательские события , чтобы отметить важные события вашего приложения, включая события, специфичные для домена. Для медиа-приложения это будет включать такие задачи, как получение плейлистов, загрузка определенного элемента мультимедиа, запуск воспроизведения и остановка воспроизведения. Определив эти события, вы сможете увидеть их в Perfetto и сравнить их время с использованием процессора и мощности вашего приложения.
Проанализируйте запланированные задания вашего приложения
Запланированные задания с использованием WorkManager позволяют выполнять фоновую работу в вашем приложении. Хотя некоторые фоновые задания должны быть периодическими, не запускайте задания слишком часто или на длительный срок, поскольку это может разрядить аккумулятор устройства.
Используйте Battery Historian для проверки выполнения запланированных заданий, как в целом ( Системная статистика > Статистика планировщика заданий ), так и по приложениям ( Статистика приложений > Запланированное задание ). Проверьте общее количество и общую продолжительность:
- Если задание выполняется очень часто, рассмотрите возможность уменьшения частоты.
- Убедитесь, что общее время выполнения соответствует ожидаемому и не превышает его значительно.
Также проверьте график Battery Historian, просматривая каждую запись JobScheduler . Когда вы удерживаете указатель над определенной записью, Battery Historian показывает владельца выполняемой работы. Рассмотрите следующее:
- Для вашего приложения продолжительность выполнения должна иметь смысл.
- Подумайте, выполняются ли задания во время работы вашего приложения или представляют собой периодическую фоновую работу.
Датчики
Устройства Wear OS имеют множество различных датчиков, таких как GPS. В большинстве случаев используйте Health Services на Wear OS вместо прямого взаимодействия с SensorManager
. Во многих случаях Health Services интеллектуально группирует данные для улучшения производительности батареи.
Чтобы проанализировать использование датчиков в вашем приложении, выполните следующую команду в окне терминала на вашем компьютере для разработки:
adb shell dumpsys sensorservice
Результаты этой команды показывают следующее:
- Текущие и предыдущие регистрации датчиков.
- Конфигурация датчика, включая дозирование, если оно установлено.
- Недавно отобранные данные.
Тестовая отмена регистрации от датчиков
Чтобы проверить, перестает ли ваше приложение получать данные датчиков, как ожидалось, протестируйте следующие сценарии:
- Проведите пальцем по экрану и закройте приложение.
- Коснитесь экрана ладонью. Это либо выключит экран, либо переведет его в режим Ambient Mode.
Используйте команду ADB из предыдущего раздела, чтобы проверить, правильно ли отображается датчик как незарегистрированный.
Уровень данных
При использовании API уровня данных каждая передача использует некоторую мощность. В частности, если вы используете этот API для отправки данных, ваше приложение должно проснуться, чтобы получить данные. По этим причинам будьте осторожны при использовании этого API.
Ниже приведены некоторые дополнительные рекомендации по использованию API уровня данных:
- Прежде чем настраивать прослушиватель с помощью
WearableListenerService
, дождитесь, пока ваше приложение станет активным. Передача изменений состояния вместо настройки быстрых обновлений. Эти изменения состояния позволяют устройству Wear OS выполнять локальные вычисления данных, например, когда началась тренировка.
Передавайте только те изменения состояния, которые обновляют ваш пользовательский интерфейс. Например, если на экране активности отображается только «пройденные километры» с точностью до одного десятичного знака, не отправляйте изменение состояния в Wear OS каждый раз, когда пользователь перемещается на один метр вперед.
Чтобы проанализировать использование API уровня данных в вашем приложении, выполните следующую команду в окне терминала на вашем компьютере для разработки:
adb shell dumpsys activity service WearableService
Результаты этой команды включают следующее:
- RpcService: позволяет увидеть, как часто и какие пути вызываются с помощью
MessageClient
. - DataService: позволяет увидеть, как часто элементы данных устанавливаются с помощью
DataClient
.
Приложения для здоровья и фитнеса
Если вы поддерживаете приложение для здоровья и фитнеса, используйте Health Services для оптимизации использования датчиков вашим приложением.
- Для
ExerciseClient
используйте Battery Historian для проверки правильного поведения в режиме окружающей среды. Убедитесь, что ваше приложение не просыпается чаще, чем раз в минуту или две, чтобы получить данныеExerciseUpdate
. - Для круглосуточного мониторинга общего состояния здоровья используйте
PassiveMonitoringClient
, как описано в руководстве по мониторингу данных о здоровье и физической форме в фоновом режиме .
Плитки и усложнения
Если ваше приложение поддерживает плитку или расширение , следуйте этим рекомендациям:
- Отключите автоматическое обновление или увеличьте частоту обновления до 2 часов или более.
- Используйте Firebase Cloud Messaging (FCM) или соответствующим образом запланированные задания для отправки обновлений данных. Будьте осторожны, чтобы не допустить высокой скорости обновлений, которая может привести к тому, что система будет планировать повторяющуюся работу с большей скоростью, чем пользователь или платформа смогут получить доступ к данным, необходимым для выполнения этой работы.
- Не планируйте работу над плиткой или усложнением, когда пользователь с ними не взаимодействует.
- Используйте подходы, ориентированные в первую очередь на офлайн-режим .
- Используйте единую базу данных для вашего основного приложения, плиток и усложнений. Это также помогает данным оставаться согласованными на поверхностях пользовательского интерфейса.
Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Доступ к местоположению в фоновом режиме
- Расписание будильников
- Создать расширенный виджет {:#advanced-widget}