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 dotyczące informowania użytkowników aplikacji o tym, jak 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 wskazówkach nawigacyjnych 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 rozwiązać ten problem, ł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 szczegółowej nawigacji korzystają z funkcji wymagających dużej ilości energii, takich jak ekran, GPS i komunikacja radiowa ze stacjami bazowymi. 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 wykonuje też większą liczbę renderowań 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 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 przez GPS i radio komórkowe wymaga operacji uruchamiania, które zużywają dużo energii: GPS musi znaleźć satelity, a radio komórkowe musi nawiązać połączenie z wieżami. Z tych powodów działają one w zasadzie nieprzerwanie podczas nawigacji, chociaż radio komórkowe pozostaje 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 ilości energii, co ogranicza możliwości zmniejszenia zużycia energii bez kompromisów, takich jak ograniczenie korzystania z ekranu. W tej sekcji znajdziesz listę podejść, 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ą określaną jako liczba klatek. Liczba klatek jest zwykle mierzona w klatkach na sekundę (kl./s). 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ść.

Więcej informacji o modyfikowaniu liczby klatek znajdziesz w sekcji Liczba klatek w dokumentacji dla deweloperów w Centrum dla deweloperów Androida.

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 wskazówek opartych 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.

Aby ukryć interfejs nawigacji, nie dodawaj elementu NavigationView ani SupportNavigationFragment. Jeśli już to zrobisz, usuń kod, który je dodaje. Poniższy kod został zmodyfikowany na podstawie aplikacji w wersji demonstracyjnej pakietu Navigation SDK na Androida i pokazuje użycie komentarzy do usunięcia kodu, który dodaje interfejs nawigacji:

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

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

Uruchomiona 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 widok mapy nie jest widoczny.
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ągnięta 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 Androida, 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 mieć takiego samego wpływu na wszystkie urządzenia, 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 Modyfikowanie 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

Aby utworzyć ciemny styl mapy, użyj obiektu MapStyleOptions z stylem JSON, który reprezentuje wybrany ciemny styl mapy. Starsze style JSON można tworzyć za pomocą starszego edytora stylów na stronie https://mapstyle.withgoogle.com/.

Zmiana częstotliwości informowania o zmianie 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 , ale jeśli Twoja aplikacja na Androida prosi o lokalizację niezależnie, zapoznaj się z poradami w artykule Optymalizacja lokalizacji pod kątem oszczędzania baterii w dokumentacji dla deweloperów Androida. Te same porady dotyczą korzystania ze źródeł lokalizacji innych niż GPS (sieć komórkowa i Wi-Fi).

Informowanie użytkowników

Użytkownicy Twojej aplikacji mogą chcieć dowiedzieć się, jak zoptymalizować zużycie energii. Aby pomóc im zmniejszyć zużycie energii w aplikacjach, zalecaj użytkownikom te działania:

  • Zablokowanie telefonu
  • Przełączenie aplikacji do nawigacji w tle
  • Jeśli to możliwe, korzystanie z nawigacji bez mapy
  • Zmniejszenie jasności ekranu – przez używanie trybu ciemnego na ekranach OLED i AMOLED lub włączenie automatycznej jasności
  • Utrzymywanie urządzenia w chłodzie
  • Jeśli jest dostępna, nawiązanie połączenia z Wi-Fi w pojeździe
Więcej porad dla użytkowników dotyczących wydłużania czasu pracy na baterii na Androidzie znajdziesz w artykule Wydłużanie czasu pracy urządzenia z Androidem na baterii. Pamiętaj, że te porady obejmują działania, które mogą pogorszyć skuteczność aplikacji do nawigacji, jak opisano w Optymalizacja zużycia energii przez aplikację w tym przewodniku.

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 dokonywać pomiarów. 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.