Оптимизируйте энергопотребление вашего приложения

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

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

Зачем оптимизировать навигационное приложение?

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

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

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

Что потребляет больше всего энергии?

В этом разделе действия в приложении, связанные с высоким энергопотреблением, делятся на две категории:

  • Рендеринг экрана
  • Обновления местоположения

Рендеринг экрана

Рендеринг экрана обычно вызывает наибольшее потребление энергии в мобильных навигационных приложениях. Каждый раз, когда устройство рисует карту и другие элементы пользовательского интерфейса на экране, оно полагается на обработку GPU и CPU. Аналогично, когда пользователь оставляет этот экран включенным на длительное время, это также потребляет больше энергии.

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

Обновления местоположения

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

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

GPS и сотовая радиосвязь зависят от энергоемких операций запуска: GPS должен найти спутники, а сотовые радиостанции должны взаимодействовать с вышками и устанавливать соединение. По этим причинам они, по сути, работают непрерывно во время навигации, хотя сотовые радиостанции остаются активными в течение 20-30 секунд, пытаясь минимизировать затраты на запуск. Операционная система управляет этими настройками, которые вы не можете легко настроить в своем приложении.

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

Оптимизируйте энергопотребление вашего приложения

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

Изменить частоту кадров

Экран обновляет то, что он показывает, с частотой, известной как частота кадров. Частота кадров обычно измеряется в кадрах в секунду (FPS). Поскольку рендеринг экрана использует много ресурсов ЦП или ГП, вы можете уменьшить частоту кадров, чтобы сэкономить электроэнергию.

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

На устройствах iOS Maps SDK для iOS предоставляет свойство preferredFrameRate для управления частотой кадров. В таблице ниже показаны значения перечислителя GMSFrameRate , которые вы можете настроить:

kGMSFrameRatePowerSave

Используйте минимальную частоту кадров для экономии заряда батареи.

kGMSFrameRateConservative

Используйте среднюю частоту кадров, чтобы обеспечить более плавную визуализацию и сэкономить циклы обработки.

kGMSFrameRateMaximum

Используйте максимальную частоту кадров для устройства.

Для бюджетных устройств это 30 кадров в секунду, а для высокопроизводительных устройств — 60 кадров в секунду.

Для справки см. GMSFrameRate в документации Google Navigation SDK для iOS.

Хотя вы не можете контролировать, как конечный пользователь устанавливает яркость экрана своего устройства или как долго он держит экран включенным, вы можете предоставить возможность навигационного руководства без карты. Это позволит конечному пользователю выбрать этот вариант для экономии энергии. Например, если водители регулярно работают в одном районе, им может не так часто потребоваться руководство на основе карты. Навигацию без карты можно включить, задав пункт назначения и запустив руководство в Navigation SDK, но не отображая карту.

Добавьте строку кода, чтобы скрыть GMSMapView :

mapView.isHidden = true

Navigation SDK продолжит обновлять привязанные к дороге местоположения, ETA и оставшееся расстояние поездки, и ваше приложение по-прежнему может подписываться на все события, вызванные SDK по мере продвижения водителя. Это не подходит для каждого варианта использования и, конечно, не является хорошим советом в случаях, когда водителю необходимо видеть карту и следовать визуальным указаниям. Следующие скриншоты иллюстрируют параллельное сравнение переключения видов карты во время активной навигации.

Демонстрационное приложение работает с видимым видом карты.
Рисунок 1. Демонстрационное приложение Navigation SDK для iOS, демонстрирующее демонстрацию Data Back
Демонстрационное приложение запущено, но карта не отображается.
Рисунок 2. Демонстрационное приложение, работающее без видимого вида карты. Обратите внимание, что оставшееся время и расстояние, а также привязанное местоположение все еще обновляются.

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

Рассмотрите возможность использования темной темы для оформления карты, чтобы сократить количество энергии, необходимое для отображения карты на экране.

Navigation SDK отображает свои карты с помощью Google Maps SDK для iOS , который содержит параметры для стилизации любых ненавигационных видов карт в вашем приложении. Вид навигации также поддерживает принудительную темную тему. Это может не влиять на все устройства одинаково из-за различий в типе экрана, но в некоторых случаях позволяет потенциально экономить электроэнергию. Недавнее исследование показало, что количество энергии, сэкономленной темной темой на некоторых экранах, зависит от того, насколько ярким был экран изначально. Например, темная тема экономит больше энергии на экранах, настроенных на полную яркость, чем на экранах, яркость которых уже настроена на 30–50 % от максимальной. Это важно учитывать при использовании темной темы для ваших приложений, поскольку экономия электроэнергии будет зависеть от того, как конечный пользователь устанавливает яркость экрана.

Дополнительную информацию об изменении пользовательского интерфейса навигации см. в разделе Изменение пользовательского интерфейса навигации .

Скриншот навигационного SDK, работающего на iPhone 15 Pro с темным стилем карты.
Рисунок 3. Навигационный SDK, настроенный с темным стилем карты
Настройте GMSMapView с помощью mapID , представляющего стиль облачной карты, определенный в вашем проекте.

Для стилизации облачных карт требуется идентификатор карты, представляющий конфигурацию карты на стороне сервера, созданную в вашем проекте Google Console. Для получения дополнительной информации о создании идентификатора карты см. документацию разработчика идентификатора карты . Для получения дополнительной информации о проектировании и развертывании стиля облачной карты см. документацию разработчика по созданию и управлению стилями облачной карты .

Изменить частоту обновления местоположения GPS

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

Это не то, что вы можете контролировать напрямую в Navigation SDK. Тот же совет применим и к использованию источников местоположения, отличных от GPS (сотовая связь и WiFi).

Обучайте своих пользователей

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

  • Заблокировать телефон
  • Переведите навигационное приложение в фоновый режим
  • По возможности используйте навигацию без карты.
  • Уменьшите яркость экрана, используя темный режим для экранов OLED и AMOLED или включив адаптивную яркость.
  • Держите устройство в прохладном месте
  • Подключитесь к автомобильному Wi-Fi, если он доступен.

Измерение энергопотребления

Вы можете использовать профессиональные инструменты для измерения энергопотребления, но часто их получение является сложным или дорогостоящим. Приложения и инструменты профилирования IDE, такие как Power Profiler в Android Studio и панель Battery Usage в XCode Organizer, измеряют энергопотребление, но может быть сложно устранить влияние фоновых процессов или установить базовый уровень производительности для измерения. В некоторых случаях ограничения устройства могут помешать получению доступа к необходимым данным.

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