Lokalizacja w tle a żywotność baterii

Korzystanie z lokalizacji w tle może znacznie wpływać na czas pracy baterii. Android umożliwia ograniczanie gromadzenia danych o lokalizacji w tle, co zmusza programistów do optymalizowania aplikacji pod kątem oszczędzania baterii. Te optymalizacje przynoszą korzyści wszystkim urządzeniom, niezależnie od wersji Androida, na której działają.

ograniczeniami dostępu do lokalizacji w tle:

  • Zbieranie lokalizacji w tle jest ograniczone, a lokalizacja jest obliczana i przesyłana tylko kilka razy na godzinę.
  • Skanowanie sieci Wi-Fi jest bardziej konserwatywne, a aktualizacje lokalizacji nie są obliczane, gdy urządzenie pozostaje połączone z tym samym statycznym punktem dostępu.
  • Czas reakcji na geoogrodzenia zmienia się z kilkudziesięciu sekund na około 2 minuty. Ta zmiana poprawia wydajność baterii nawet 10 razy na niektórych urządzeniach.

Wymagana wiedza

Ten dokument zakłada znajomość tych interfejsów API:

Informacje o szybkim zużyciu baterii

Pobieranie danych o lokalizacji a zużycie baterii:

  • Dokładność: dokładność danych o lokalizacji. Zasadniczo im większa dokładność, tym większy pobór prądu.
  • Częstotliwość: jak często jest obliczana lokalizacja. Im częściej obliczana jest lokalizacja, tym więcej energii zużywa bateria.
  • Opóźnienie:szybkość dostarczania danych o lokalizacji. Mniejsza latencja zwykle wymaga większego zużycia baterii.

Dokładność

Dokładność lokalizacji możesz określić za pomocą metody setPriority(), przekazując jako argument jedną z tych wartości:

  • PRIORITY_HIGH_ACCURACY zapewnia najdokładniejszą możliwą lokalizację, która jest obliczana na podstawie jak największej liczby danych wejściowych (włącza GPS, Wi-Fi i komórkową oraz używa różnych czujników) i może powodować znaczne zużycie baterii.
  • PRIORITY_BALANCED_POWER_ACCURACY zapewnia dokładną lokalizację przy optymalizacji zużycia energii. bardzo rzadko korzysta z GPS; Zwykle do obliczenia lokalizacji urządzenia używa kombinacji informacji o sieci Wi-Fi i komórkowej.
  • PRIORITY_LOW_POWER korzysta głównie ze stacji bazowych i nie używa danych z GPS ani Wi-Fi, zapewniając przy tym dokładność na poziomie miasta przy minimalnym zużyciu baterii.
  • PRIORITY_NO_POWER otrzymuje pasywnie lokalizację z innych aplikacji, dla których lokalizacja została już obliczona.

Aby zaspokoić potrzeby większości aplikacji w zakresie lokalizacji, używaj opcji zrównoważonego lub niskiego zużycia energii. Zarezerwuj wysoką dokładność dla aplikacji, które działają na pierwszym planie i wymagają aktualizacji lokalizacji w czasie rzeczywistym (np. aplikacji do map).

Częstotliwość

Częstotliwość wyświetlania reklam w danym miejscu możesz określić na 2 sposoby:

  • Użyj metody setinterval(), aby określić przedział czasu na obliczanie lokalizacji aplikacji.
  • Aby określić interwał otrzymywania lokalizacji z innych aplikacji, użyj metody setFastestInterval().

Przekazywanie największej możliwej wartości podczas używania parametru setInterval(). Jest to szczególnie ważne w przypadku zbierania danych o lokalizacji w tle, które często powoduje zużycie baterii. Zarezerwuj przedziały czasowe o długości kilku sekund na potrzeby zastosowań na pierwszym planie.

Limity lokalizacji w tle wprowadzone w Androidzie 8.0 (poziom interfejsu API 26) wymuszają stosowanie tych strategii, ale Twoja aplikacja powinna dążyć do ich stosowania na urządzeniach z Androidem 7.0 (poziom interfejsu API 24) i starszych.

Opóźnienie

Możesz określić opóźnienie za pomocą metody setMaxWaitTime(), zazwyczaj podając wartość kilkakrotnie większą niż interwał określony w metodzie setInterval(). To ustawienie opóźnia przesyłanie lokalizacji, a wiele aktualizacji lokalizacji może być dostarczanych w partiach. Te 2 zmiany pomagają zminimalizować zużycie baterii.

Jeśli Twoja aplikacja nie wymaga natychmiastowej aktualizacji lokalizacji, podaj do metody setMaxWaitTime() możliwie największą wartość, rezygnując w ten sposób z opóźnienia na rzecz większej ilości danych i efektywniejszego wykorzystania baterii.

Korzystając z geofence’ów, aplikacje powinny przekazywać dużą wartość do metody setNotificationResponsiveness(), aby oszczędzać energię. Zalecana wartość to co najmniej 5 minut.

Więcej materiałów

Więcej informacji znajdziesz w tych dokumentach:

  • Rekomendacje: w tym przewodniku znajdziesz konkretne zalecane działania, które możesz podjąć, aby zmniejszyć wpływ aplikacji na czas pracy na baterii.
  • Przykłady użycia: w tym przewodniku znajdziesz kilka typowych przypadków użycia, w których możesz korzystać z usług lokalizacyjnych, oraz dowiesz się, jak zoptymalizować wpływ na czas pracy na baterii w tych przypadkach.