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 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. 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 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 prowadzi do ograniczenia wydajności i jej późniejszego 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 przetwarzania przez GPU i CPU. Podobnie, gdy użytkownik pozostawia ten ekran włączony przez długi czas, zużywa więcej energii.
Do pewnego stopnia można się spodziewać 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ż częstsze renderowanie 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
- Aktualizowanie 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 radia komórkowe muszą nawiązać połączenie z wieżami. Z tych powodów 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, co ogranicza możliwości zmniejszenia wpływu bez kompromisów, takich jak ograniczenie korzystania z ekranu. W tej sekcji znajdziesz listę podejść, które możesz zastosować podczas optymalizacji aplikacji, w kolejności od najbardziej do najmniej skutecznych.
Zmiana liczby klatek
Ekran odświeża wyświetlane informacje 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 GPU, 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 prędkość lub kierunek zmienia się 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 wyliczeniaGMSFrameRate, które możesz dostosować:
|
Użyj minimalnej liczby klatek, aby oszczędzać baterię. |
|
Użyj średniej liczby klatek, aby zapewnić płynniejsze renderowanie i oszczędzać cykle przetwarzania. |
|
Użyj maksymalnej liczby klatek dla urządzenia. W przypadku urządzeń z niższej półki jest to 30 FPS. W przypadku urządzeń z wyższej półki jest to 60 FPS. |
Więcej informacji znajdziesz w dokumentacji pakietu Google Navigation SDK na iOS w sekcji GMSFrameRate.
Nawigacja bez mapy
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 mogła 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.
|
|
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 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 Zmienianie interfejsu nawigacji.
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 w przypadku ekranów 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 uzyskanie 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.