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

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

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

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

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

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

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

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

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

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

Отображение на экране

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

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

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

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

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

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

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

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

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

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

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

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

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

kGMSFrameRatePowerSave

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

kGMSFrameRateConservative

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

kGMSFrameRateMaximum

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

Для устройств низкого класса это 30 кадров в секунду, а для устройств высокого класса — 60 кадров в секунду.

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

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

Добавьте строку кода для скрытия GMSMapView :

mapView.isHidden = true

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

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

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

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

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

Чтобы узнать больше о настройке пользовательского интерфейса навигации, см. раздел «Настройка пользовательского интерфейса навигации» .

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

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

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

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

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

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

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

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

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

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

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