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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

kGMSFrameRatePowerSave

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

kGMSFrameRateConservative

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

kGMSFrameRateMaximum

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

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

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

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

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

mapView.isHidden = true

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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