Zoptymalizuj zużycie energii przez aplikację

W tym dokumencie znajdziesz sprawdzone metody optymalizacji zużycia energii w aplikacji nawigacyjnej, którą tworzysz za pomocą pakietu Navigation SDK. Jednocześnie opisujemy w nim kompromisy, które należy wziąć pod uwagę, stosując te metody. Ten dokument dotyczy w szczególności:

  • Źródła wysokiego poboru mocy, uszeregowane od najwyższego do najniższego.
  • Strategie optymalizacji zużycia energii, pogrupowane według ważności, zaczynając od częstotliwości klatek.
  • Strategie dla użytkowników, które uczą ich, jak zarządzać korzystaniem z urządzenia podczas nawigacji.

Dlaczego warto zoptymalizować aplikację do nawigacji?

W zależności od sytuacji użytkownicy aplikacji mogą korzystać z nawigacji przez długi czas. Na przykład kierowcy i kurierzy mogą pracować długie godziny, wykonując zadania w nieznanym terenie. W takich przypadkach użytkownicy polegają głównie na wskazówkach w aplikacji. Może to powodować typowe problemy:

  • Zużycie baterii i dostępność ładowarek. Intensywne korzystanie z nawigacji może powodować szybsze rozładowywanie się baterii urządzenia. Wielu użytkowników może rozwiązać ten problem, ładując urządzenie w samochodzie, ale kierowcy jednośladów nie mogą tego zrobić.
  • Ograniczenie działania urządzenia z powodu przegrzania Nawet użytkownicy, którzy stale ładują swoje urządzenie, mogą mieć problemy. Wysokie zużycie energii przez długi czas może spowodować nagrzewanie się urządzenia, co spowoduje ograniczenie ze względu na temperaturę i następną utratę wydajności.

Aplikacje nawigacyjne korzystają z funkcji zużywających dużo energii, takich jak ekran, GPS i komunikacja radiowa z wieżami telefonii komórkowych, dlatego sprawdzoną metodą jest optymalizacja zużycia energii przez aplikację mobilną. Należy też wziąć pod uwagę potrzeby energetyczne docelowych odbiorców, aby móc dokonać odpowiednich kompromisów między wydajnością a optymalizacją zużycia energii.

Co zużywa najwięcej energii?

W tej sekcji czynności w aplikacji związane z wysokim zużyciem energii są podzielone na 2 kategorie:

  • Renderowanie ekranu
  • Aktualizacje lokalizacji

Renderowanie ekranu

W aplikacjach do nawigacji mobilnej największe zużycie energii zwykle powoduje renderowanie ekranu. Za każdym razem, gdy urządzenie wyświetla mapę i inne elementy interfejsu na ekranie, korzysta z procesora graficznego i procesora. Podobnie, gdy użytkownik pozostawia włączony ekran przez dłuższy czas, zużycie energii również wzrasta.

W pewnym stopniu można się spodziewać wysokiego zużycia energii w przypadku kierowców i pasażerów, którzy nawigują, korzystając z widocznej mapy, zwłaszcza jeśli używają aplikacji przez wiele godzin. W tym scenariuszu aplikacja renderuje też z większą częstotliwością na ekranie, ponieważ mapa jest aktualizowana w czasie rzeczywistym. W niektórych przypadkach ekran może być odświeżany niemal bez przerwy, zwłaszcza gdy użytkownik jedzie z miejsca na miejsce bez zatrzymywania się.

Aktualizacje lokalizacji

Oprócz renderowania ekranu zużycie energii przez urządzenie zwiększają 2 inne czynności związane z nawigacją:

  • Korzystanie z wieży radiowej i GPS
  • aktualizacje i udostępnianie lokalizacji, na przykład w celu podania przewidywanego czasu dojazdu lub zgłoszenia pozycji pojazdu w flotylli;

Zarówno GPS, jak i komórkowa komunikacja radiowa wymagają dużych ilości energii na potrzeby uruchamiania: GPS musi znaleźć satelity, a komórkowa komunikacja radiowa musi nawiązać połączenie z wieżami i ustanowić połączenie. Z tych powodów są one w podstawie stale aktywne podczas nawigacji, mimo że radiokomórki pozostają aktywne przez 20–30 sekund, aby zminimalizować koszty uruchamiania. Te ustawienia są kontrolowane przez system operacyjny i nie można ich łatwo skonfigurować w aplikacji.

W przypadku aktualizacji lokalizacji zużycie energii zależy od czynników, których nie da się przewidzieć. Na przykład odległość między urządzeniem a stacją bazową sieci komórkowej określa zużycie energii, ponieważ urządzenie będzie używać minimalnego sygnału potrzebnego do kontynuowania nawigacji, aby uniknąć przełączania się między wieżami. Dlatego urządzenie korzystające z nawigacji w miejscu o słabym zasięgu zużywa więcej energii niż urządzenie w pobliżu stacji bazowej. Ponadto niektóre aplikacje mogą udostępniać aktualizacje lokalizacji z centralną usługą zarządzania flotą, więc muszą się komunikować z serwerem.

Optymalizacja zużycia energii przez aplikację

Wyzwaniem w optymalizacji zużycia energii w aplikacjach do nawigacji jest to, że aplikacje te w dużej mierze polegają na zasobach pochłaniających dużo energii, co ogranicza możliwości ograniczenia wpływu bez konieczności dokonywania kompromisów, takich jak ograniczenie używania ekranu. W tej sekcji znajdziesz listę metod optymalizacji aplikacji, uporządkowanych od najbardziej do najmniej skutecznych.

Zmiana liczby klatek

Ekran aktualizuje wyświetlany obraz z częstotliwością zwaną częstotliwością odświeżania. Liczba klatek jest zwykle mierzona w klatkach na sekundę (FPS). Renderowanie ekranu obciąża procesor lub kartę graficzną, dlatego możesz zmniejszyć liczbę klatek na sekundę, aby oszczędzać energię.

Minusem zmniejszenia częstotliwości wyświetlania klatek jest to, że renderowanie ekranu może być mniej płynne, zwłaszcza jeśli mapa jest często aktualizowana. Może to być najbardziej widoczne, gdy mapa jest zbliżona, aby pokazać więcej szczegółów, gdy użytkownik porusza się z dużą prędkością lub gdy zmienia prędkość lub kierunek o znaczną wartość.

Na urządzeniach z iOS pakiet SDK Map Google na iOS udostępnia właściwość preferredFrameRate, która umożliwia kontrolowanie częstotliwości wyświetlania klatek. Tabela poniżej zawiera wartości enumeratora GMSFrameRate, które możesz dostosowywać:

kGMSFrameRatePowerSave

Użyj minimalnej liczby klatek, aby oszczędzać baterię.

kGMSFrameRateConservative

Użyj średniej liczby klatek na sekundę, aby zapewnić płynniejsze renderowanie i zaoszczędzić cykle przetwarzania.

kGMSFrameRateMaximum

Użyj maksymalnej liczby klatek na sekundę dla urządzenia.

Na urządzeniach niskiej klasy jest to 30 FPS, a na urządzeniach wysokiej klasy – 60 FPS.

Informacje na ten temat znajdziesz w dokumentacji pakietu SDK na potrzeby nawigacji Google na iOS w sekcji GMSFrameRate.

Nie możesz kontrolować, jak użytkownik ustawia jasność ekranu urządzenia ani jak długo ekran pozostaje włączony, ale możesz udostępnić opcję nawigacji bez mapy. Pozwoli to użytkownikowi wybrać tę opcję, aby oszczędzać energię. Jeśli na przykład kierowcy regularnie pracują w tym samym sąsiedztwie, mogą nie potrzebować wskazówek opartych na mapie tak często. Nawigację bez mapy można włączyć, ustawiając miejsce docelowerozpoczynając nawigację w pakiecie Navigation SDK, ale bez wyświetlania mapy.

Dodaj wiersz kodu, aby ukryć widok GMSMapView:

mapView.isHidden = true

Pakiet SDK do nawigacji będzie nadal aktualizować położenie na mapie, przewidywany czas dojazdu i pozostającą odległość do przebycia, a Twoja aplikacja będzie nadal subskrybować wszystkie zdarzenia wywoływane przez pakiet SDK w miarę przemieszczania się kierowcy. Nie jest to odpowiednie rozwiązanie w każdym przypadku. Oczywiście nie jest to dobra rada w przypadku, gdy kierowca musi widzieć mapę i podążać za wskazówkami wizualnymi. Na poniższych zrzutach ekranu widać porównanie widoków mapy podczas aktywnej nawigacji.

Uruchomiona aplikacja demonstracyjna z widocznym widokiem mapy.
Rysunek 1. Przykładowa aplikacja iOS z pakietem SDK nawigacji, która pokazuje demonstrację funkcji Data Back
Aplikacja demonstracyjna z wyświetloną mapą
Rysunek 2. Aplikacja demonstracyjna uruchomiona bez widoku mapy. Pamiętaj, że pozostały czas i odległość, a także lokalizacja zarejestrowana przez kamerę samochodową, są nadal aktualizowane.

Używanie ciemnego stylu mapy

Rozważ użycie ciemnego motywu, aby zmniejszyć ilość energii potrzebnej do renderowania mapy na ekranie.

Pakiet SDK do nawigacji renderuje mapy za pomocą pakietu SDK Map Google na iOS, który zawiera opcje stylizacji widoków mapy innych niż widok nawigacji w aplikacji. Widok nawigacji obsługuje też wymuszanie trybu ciemnego. Może to nie mieć wpływu na wszystkie urządzenia w taki sam sposób ze względu na różnice w typie ekranu, ale w niektórych przypadkach pozwala na potencjalne oszczędności energii. Niedawne badanie wykazało, że ilość energii oszczędzanej przez tryb ciemny na niektórych ekranach zależy od tego, jak jasny jest ekran na początku. Na przykład tryb ciemny oszczędza więcej energii na ekranach ustawionych na pełną jasność niż na ekranach, których jasność jest już dostosowana do 30–50% maksymalnej jasności. Należy o tym pamiętać, gdy używasz ciemnego motywu w aplikacjach, ponieważ oszczędność energii będzie zależeć od tego, jak użytkownik ustawi jasność ekranu.

Więcej informacji o modyfikowaniu interfejsu użytkownika nawigacji znajdziesz w artykule Modyfikowanie interfejsu użytkownika nawigacji.

Zrzut ekranu pakietu SDK do nawigacji działającego na telefonie iPhone 15 Pro z ciemnym stylem mapy.
Rysunek 3. Pakiet SDK nawigacji skonfigurowany z ciemnym stylem mapy
Skonfiguruj widok mapy GMSMapView za pomocą identyfikatora mapy mapID, który reprezentuje styl mapy oparty na usłudze Cloud określony w projekcie.

Definiowanie stylów map w Google Cloud wymaga identyfikatora mapy, który reprezentuje konfigurację mapy po stronie serwera utworzoną w projekcie w Google Console. Więcej informacji o tworzeniu identyfikatorów map znajdziesz w dokumentacji dla programistów na temat identyfikatorów map. Więcej informacji o projektowaniu i wdrażaniu stylu mapy opartego na Google Cloud znajdziesz w dokumentacji dla deweloperów dotyczącej tworzenia i zarządzania stylami map opartymi na Google Cloud.

Zmień częstotliwość aktualizacji lokalizacji GPS

Przy rozważaniu zużycia energii na potrzeby aktualizacji lokalizacji wysyłanych z urządzenia skoncentruj się bardziej na częstotliwości aktualizacji lokalizacji niż na ilości danych wysyłanych w ramach transmisji.

Nie możesz bezpośrednio kontrolować tego w pakiecie SDK nawigacji. Ta sama rada dotyczy korzystania ze źródeł lokalizacji innych niż GPS (komórka i Wi-Fi).

Edukowanie użytkowników

Użytkownicy Twojej aplikacji mogą chcieć wiedzieć, jak zoptymalizować zużycie energii. Aby pomóc im zmniejszyć zużycie energii w aplikacjach, zaleć użytkownikom:

  • Zablokuj telefon
  • Uruchom aplikację do nawigacji w tle
  • Jeśli to możliwe, korzystaj z nawigacji bez mapy.
  • zmniejszyć jasność ekranu, korzystając z ciemnego trybu na ekranach OLED i AMOLED lub włączając adaptacyjną jasność;
  • Nie przegrzewaj urządzenia.
  • Połącz się z siecią Wi-Fi w samochodzie (jeśli jest dostępna).

Pomiar zużycia energii

Do pomiaru zużycia energii możesz użyć profesjonalnych narzędzi, ale ich zdobycie jest często trudne lub kosztowne. Aplikacje i narzędzia do profilowania IDE, takie jak Power Profiler w Android Studiopanel Battery Usage w XCode Organizer, mierzą zużycie energii, ale trudno jest wyeliminować wpływ procesów działających w tle lub ustawić bazę wydajności, z której można dokonywać pomiarów. W niektórych przypadkach ograniczenia na urządzeniu mogą uniemożliwić uzyskanie dostępu do niezbędnych danych.

Możesz użyć sprzętu do monitorowania zasilania i zmodyfikować konfigurację połączenia z baterią. Istnieją też komercyjne produkty i usługi, które ułatwiają to zadanie. Pamiętaj, że modyfikowanie urządzeń w ten sposób może spowodować utratę gwarancji.