Zoptymalizuj zużycie energii przez aplikację

W tym dokumencie opisujemy sprawdzone metody optymalizacji zużycia energii w mobilnej aplikacji do nawigacji, którą tworzysz za pomocą pakietu Navigation SDK. Opisujemy też kompromisy, które należy wziąć pod uwagę podczas stosowania tych metod. W szczególności omawiamy te kwestie:

  • Źródła wysokiego zużycia energii, uporządkowane od największego do najmniejszego.
  • Strategie optymalizacji zużycia energii, uporządkowane według ważności, zaczynając od liczby klatek.
  • Strategie dla użytkowników , które pomogą im zarządzać zużyciem energii przez urządzenie 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. Kierowcy i kurierzy mogą na przykład pracować przez wiele godzin, wykonując zadania w nieznanym terenie. W takich przypadkach w dużym stopniu polegają na nawigacji krok po kroku w aplikacji. Powoduje to typowe problemy:

  • Szybkie zużycie baterii i dostępność ładowarek. Intensywne korzystanie z nawigacji może powodować szybsze niż oczekiwane rozładowywanie się baterii urządzenia. Wielu użytkowników może temu zapobiec, ładując urządzenie w pojeździe, ale kierowcy motocykli nie mają takiej możliwości.
  • Ograniczanie wydajności urządzenia z powodu przegrzania. Problemy mogą mieć nawet użytkownicy, którzy stale ładują urządzenie. Wysokie zużycie energii przez długi czas może spowodować przegrzanie urządzenia, co z kolei może doprowadzić do ograniczenia wydajności i jej spadku.

Aplikacje do nawigacji krok po kroku korzystają z funkcji wymagających dużej mocy, takich jak ekran, GPS i komunikacja radiowa z wieżami komórkowymi. Dlatego warto zoptymalizować zużycie energii przez aplikację mobilną. Dodatkowo należy wziąć pod uwagę potrzeby docelowych odbiorców w zakresie zużycia energii, 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 dzielimy działania w aplikacji związane z wysokim zużyciem energii na 2 kategorie:

  • Renderowanie ekranu
  • Aktualizacje lokalizacji

Renderowanie ekranu

Renderowanie ekranu zwykle powoduje największe zużycie energii w mobilnych aplikacjach do nawigacji. Za każdym razem, gdy urządzenie rysuje mapę i inne elementy interfejsu na ekranie, korzysta z procesora i układu graficznego. Podobnie, gdy użytkownik pozostawia ekran włączony przez długi czas, zużywa więcej energii.

W pewnym stopniu możesz spodziewać się wysokiego zużycia energii przez kierowców, którzy polegają na widocznej mapie podczas nawigacji, zwłaszcza jeśli korzystają z aplikacji przez wiele godzin. W takim przypadku aplikacja renderuje ekran z większą częstotliwością, 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 energię urządzenia zużywają 2 inne działania związane z nawigacją:

  • Korzystanie ze stacji bazowej i GPS-a
  • Aktualizacje i udostępnianie lokalizacji, np. w celu podania szacowanego czasu dotarcia na miejsce lub zgłoszenia pozycji pojazdu we flocie.

Komunikacja radiowa z wieżami komórkowymi i GPS-em wymaga energochłonnych operacji uruchamiania: GPS musi znaleźć satelity, a radia komórkowe muszą nawiązać połączenie z wieżami. Z tego powodu działają one w zasadzie nieprzerwanie podczas nawigacji, chociaż radia komórkowe pozostają aktywne przez 20–30 sekund, aby zminimalizować koszty uruchamiania. Te ustawienia są kontrolowane przez system operacyjny, którego nie można łatwo skonfigurować w aplikacji.

W przypadku aktualizacji lokalizacji zużycie energii zależy od nieprzewidywalnych czynników. Na przykład zużycie energii zależy od odległości między urządzeniem a stacją bazową sieci komórkowej, ponieważ urządzenie będzie używać minimalnego sygnału niezbędnego do kontynuowania nawigacji, aby uniknąć przełączania się między wieżami. Dlatego urządzenie nawigujące w obszarze o słabym połączeniu będzie zużywać więcej energii niż urządzenie znajdujące się blisko stacji bazowej. Dodatkowo niektóre aplikacje mogą udostępniać aktualizacje lokalizacji centralnej usłudze zarządzania flotą, dlatego będą musiały komunikować się z serwerem.

Optymalizacja zużycia energii przez aplikację

Optymalizacja zużycia energii w aplikacjach do nawigacji jest trudna, ponieważ te aplikacje w dużym stopniu zależą od zasobów wymagających dużej mocy. Ogranicza to możliwości zmniejszenia wpływu bez kompromisów, takich jak ograniczenie korzystania z ekranu. W tej sekcji znajdziesz listę metod, które możesz zastosować podczas optymalizacji aplikacji, uporządkowanych od najbardziej do najmniej skutecznych.

Zmiana liczby klatek

Ekran odświeża wyświetlane treści z częstotliwością zwaną liczbą klatek. Liczba klatek jest zwykle mierzona w klatkach na sekundę (FPS). Ponieważ renderowanie ekranu zużywa dużo procesora lub układu graficznego, możesz zmniejszyć liczbę klatek, aby oszczędzać energię.

Kompromisem przy zmniejszaniu liczby klatek jest to, że renderowanie ekranu może wydawać się mniej płynne, zwłaszcza jeśli mapa jest często aktualizowana. Może to być najbardziej widoczne, gdy mapa jest powiększona, użytkownik porusza się z dużą prędkością lub gdy zmienia prędkość lub kierunek o dużą wartość.

W przypadku urządzeń z iOS pakiet Maps SDK na iOS udostępnia właściwość preferredFrameRate, która umożliwia kontrolowanie liczby klatek. W tabeli poniżej znajdziesz wartości wyliczenia GMSFrameRate, które możesz dostosować:

kGMSFrameRatePowerSave

Używaj minimalnej liczby klatek, aby oszczędzać wykorzystanie baterii.

kGMSFrameRateConservative

Używaj średniej liczby klatek, aby zapewnić płynniejsze renderowanie i oszczędzać cykle przetwarzania.

kGMSFrameRateMaximum

Używaj maksymalnej liczby klatek dla urządzenia.

W przypadku urządzeń z niższej półki jest to 30 FPS, a w przypadku urządzeń z wyższej półki – 60 FPS.

Więcej informacji znajdziesz w dokumentacji pakietu Google Navigation SDK na iOS w sekcji GMSFrameRate.

Nie możesz kontrolować, jak użytkownik ustawia jasność ekranu urządzenia ani jak długo pozostawia go włączonego, ale możesz udostępnić opcję nawigacji bez mapy. Umożliwi to użytkownikowi wybranie tej opcji w celu oszczędzania energii. Jeśli na przykład kierowcy regularnie pracują w tej samej okolicy, mogą nie potrzebować tak często nawigacji opartej na mapie. Nawigację bez mapy można włączyć, ustawiając miejsce docelowe i rozpoczynając nawigację w pakiecie Navigation SDK, ale nie wyświetlając mapy.

Dodaj wiersz kodu, aby ukryć GMSMapView:

mapView.isHidden = true

Pakiet Navigation SDK będzie nadal aktualizować lokalizacje przyciągane do drogi, szacowany czas dotarcia na miejsce i pozostały dystans, a Twoja aplikacja będzie nadal subskrybować wszystkie zdarzenia generowane przez pakiet SDK podczas jazdy. Nie jest to odpowiednie w każdym przypadku użycia i oczywiście nie jest to dobra rada w sytuacjach, gdy kierowca musi widzieć mapę i korzystać z nawigacji wizualnej. Na zrzutach ekranu poniżej widać porównanie przełączania widoków mapy podczas aktywnej nawigacji.

Aplikacja w wersji demonstracyjnej z widocznym widokiem mapy.
Rysunek 1.Aplikacja w wersji demonstracyjnej pakietu Navigation SDK na iOS pokazująca wersję demonstracyjną Data Back
Aplikacja w wersji demonstracyjnej działa, ale nie widać widoku mapy.
Rysunek 2.Aplikacja w wersji demonstracyjnej działająca bez widocznego widoku mapy. Zwróć uwagę, że pozostały czas i odległość oraz lokalizacja przyciągana do drogi są nadal aktualizowane.

Używanie ciemnego stylu mapy

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

Pakiet Navigation SDK renderuje mapy za pomocą pakietu Google Maps SDK na iOS, który zawiera opcje stylizowania wszystkich widoków mapy innych niż nawigacyjne w aplikacji. Widok nawigacji obsługuje też wymuszanie trybu ciemnego. Ze względu na różnice w typach ekranów może to nie wpływać na wszystkie urządzenia w ten sam sposób, ale w niektórych przypadkach może pozwolić na oszczędzanie energii. Z niedawnego badania wynika, ż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. Jest to ważne, gdy używasz trybu ciemnego w aplikacjach, ponieważ oszczędność energii będzie zależeć od tego, jak użytkownik ustawi jasność ekranu.

Więcej informacji o modyfikowaniu interfejsu nawigacji znajdziesz w artykule Zmienianie interfejsu nawigacji.

Zrzut ekranu przedstawiający pakiet Navigation SDK działający na iPhonie 15 Pro z ciemnym stylem mapy.
Rysunek 3.Pakiet Navigation SDK skonfigurowany z ciemnym stylem mapy
Skonfiguruj GMSMapView za pomocą mapID, który reprezentuje styl mapy w chmurze zdefiniowany w Twoim projekcie.

Stylizacja mapy w chmurze wymaga identyfikatora mapy, który reprezentuje konfigurację mapy po stronie serwera utworzoną w projekcie w konsoli Google. Więcej informacji o tworzeniu identyfikatora mapy znajdziesz w dokumentacji dla deweloperów dotyczącej identyfikatora mapy. Więcej informacji o projektowaniu i wdrażaniu stylu mapy w chmurze znajdziesz w dokumentacji dla deweloperów dotyczącej tworzenia stylów mapy w chmurze i zarządzania nimi.

Zmiana częstotliwości aktualizacji lokalizacji GPS

Rozważając zużycie energii przez aktualizacje lokalizacji wysyłane z urządzenia, skup się bardziej na częstotliwości aktualizacji lokalizacji niż na ilości danych wysyłanych w transmisji.

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

Informowanie 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, zalecaj użytkownikom te działania:

  • Zablokuj telefon.
  • Uruchom aplikację do nawigacji w tle.
  • Jeśli to możliwe, korzystaj z nawigacji bez mapy.
  • Zmniejsz jasność ekranu, używając trybu ciemnego na ekranach OLED i AMOLED lub włączając jasność adaptacyjną.
  • Utrzymuj urządzenie w chłodzie.
  • Jeśli jest dostępna, połącz się z siecią Wi-Fi w pojeździe.

Pomiar zużycia energii

Do pomiaru zużycia energii możesz używać profesjonalnych narzędzi, ale ich zdobycie jest często trudne lub kosztowne. Zużycie energii mierzą aplikacje i narzędzia do profilowania IDE, takie jak Power Profiler w Android Studio i panel Zużycie baterii w XCode Organizer, ale trudno jest wyeliminować wpływ procesów działających w tle lub ustawić punkt odniesienia wydajności, względem którego można mierzyć. W niektórych przypadkach ograniczenia urządzenia mogą uniemożliwić dostęp do niezbędnych danych.

Możesz używać specjalnego sprzętu do monitorowania zużycia energii i modyfikować konfigurację połączenia z baterią. Istnieją też komercyjne produkty i usługi, które Ci w tym pomogą. Pamiętaj, że modyfikowanie urządzeń w ten sposób może spowodować utratę gwarancji.