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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительную информацию об изменении частоты кадров см. в разделе «Частота кадров» в документации для разработчиков Центра разработки Android Media .

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

Чтобы скрыть пользовательский интерфейс навигации, не добавляйте NavigationView или SupportNavigationFragment или, если вы это уже сделали, удалите код, который их добавляет. Следующий код является измененным из демонстрационного приложения Navigation SDK Android и показывает использование комментариев для удаления кода, добавляющего пользовательский интерфейс навигации:

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

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

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

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

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

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

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

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

Чтобы создать темный стиль карты, используйте объект MapStyleOptions со стилем JSON , который представляет выбранный вами темный стиль карты. Устаревшие стили JSON можно создавать с помощью устаревшего редактора стилей по адресу https://mapstyle.withgoogle.com/ .

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

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

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

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

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

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

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

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

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