Aby wydłużyć czas pracy urządzenia na baterii, Android może wpływać na jego stan, monitorując jego użycie i stan czuwania. Platforma może przejść w stan uśpienia, aby wstrzymać działanie aktywności, gdy urządzenie nie jest używane.
Informacje o Doze
Doze wydłuża czas pracy na baterii, opóźniając aktywność procesora i sieci w tle aplikacji, gdy urządzenie nie jest używane przez dłuższy czas.
Nieaktywne urządzenia w trybie Doze okresowo przechodzą w okres konserwacji, podczas którego aplikacje mogą wykonywać oczekujące zadania (synchronizacje, zadania itp.). Doze wznawia następnie stan uśpienia na dłuższy czas, po którym następuje kolejny okres konserwacji. Platforma kontynuuje sekwencję Doze sleep/maintenance, zwiększając długość bezczynności za każdym razem, aż do osiągnięcia maksymalnego czasu snu wynoszącego kilka godzin. W każdej chwili urządzenie w trybie Doze jest świadome ruchu i natychmiast przerywa ten tryb, gdy wykryje ruch.
Android 7.0 i nowsze wersje rozszerzają Doze, aby uruchamiać lżejszą optymalizację za każdym razem, gdy użytkownik wyłącza ekran urządzenia, nawet jeśli nadal się porusza, co pozwala wydłużyć czas pracy na baterii.
Krytyczne usługi systemowe są zwykle konfigurowane przez producentów urządzeń tak, aby były wyłączone z Doze. Użytkownicy mogą też wyłączyć funkcję Doze dla określonych aplikacji, korzystając z menu Ustawienia. Wyłączenie tej funkcji może jednak spowodować szybsze rozładowywanie się baterii urządzenia. Domyślnie Doze jest wyłączony w AOSP. Szczegółowe informacje o włączaniu Doze znajdziesz w artykule Integracja Doze.
Wymagania dotyczące Doze
Obsługa Doze wymaga, aby urządzenie miało usługę wiadomości w chmurze, taką jak Komunikacja w chmurze Firebase (FCM). Zewnętrzne zdarzenia aktywacyjne, takie jak wiadomości w chmurze, mogą tymczasowo aktywować aplikacje, aby mogły działać, gdy urządzenie jest w trybie Doze.
Pełna obsługa Doze wymaga również detektora znacznego ruchu (SMD) na urządzeniu. Jednak tryb Doze w wersji lekkiej w Androidzie 7.0 i nowszych nie wymaga SMD. Jeśli Doze jest włączona na urządzeniu:
- Ma SMD, występują pełne optymalizacje Doze (w tym optymalizacje oparte na lekkich danych).
- Nie ma SMD, występują tylko lekkie optymalizacje Doze.
Cykl życia Doze
Tryb Doze rozpoczyna się, gdy platforma wykryje, że urządzenie jest nieaktywne, i kończy się, gdy wystąpi co najmniej 1 czynność spełniająca kryteria wyjścia.
Platforma wykrywa, że urządzenie jest nieaktywne, gdy:
- Urządzenie jest nieruchome (używa SMD).
- Ekran urządzenia jest wyłączony przez pewien czas.
Tryb Doze nie włącza się, gdy urządzenie zasilane z baterii jest podłączone do ładowarki.
Podczas uśpienia
Platforma stara się utrzymać system w stanie uśpienia, okresowo wznawiając normalne działanie w oknie konserwacji, a następnie ponownie uświadczając urządzenie na dłuższy czas. Podczas snu obowiązują te ograniczenia:
- Aplikacje nie mają dostępu do sieci.
- Blokady aktywacji aplikacji są ignorowane.
- Alarmy są opóźnione. Nie dotyczy to alarmów zegara ani alarmów ustawianych za pomocą funkcji
setAndAllowWhileIdle()
(ograniczone do 1 raza na 15 minut na aplikację podczas korzystania z trybu Doze). Ta wyjątek dotyczy aplikacji (takich jak Kalendarz), które muszą wyświetlać powiadomienia o przypomnieniach o wydarzeniu. - Nie są wykonywane skanowania Wi-Fi.
SyncAdapter
synchronizacji iJobScheduler
zadań odroczonych do następnego okna konserwacji.- Aplikacje otrzymujące SMS-y i MMS-y są tymczasowo dodawane do białej listy, aby mogły dokończyć przetwarzanie.
Zamknij
Platforma wyprowadza urządzenie z trybu Doze, gdy wykryje:
- Interakcja użytkownika z urządzeniem
- Ruch urządzenia
- Ekran urządzenia włącza się
- Alarm z niezwłocznej aplikacji AlarmClock
Powiadomienia nie powodują wyjścia z trybu Doze.
Android 7.0 i nowsze wersje rozszerzają Doze, włączając lekki tryb uśpienia podczas wyłączania ekranu, zanim urządzenie przejdzie w stan bezczynności.
Rysunek 1. Tryby Doze dla urządzeń stacjonarnych i niestacjonarnych.
Działanie | Uśpienie | Lekka Doze |
---|---|---|
Wyzwalacz | Wyłączony ekran, zasilanie z baterii, stacjonarny | Ekran wyłączony, zasilanie z baterii (bez podłączania) |
Czas | stopniowo wydłużanie okresów konserwacji, | powtarzające się okresy konserwacji trwające N minut. |
Ograniczenia | Brak dostępu do sieci, blokada wybudzania ani skanowanie GPS/Wi-Fi; alarmy i zadania/synchronizacje są opóźnione | Brak dostępu do sieci; zadania i synchronizacje opóźnione z wyjątkiem okresów konserwacji |
Działanie | tylko wiadomości z powiadomień push o wysokim priorytecie, | wszystkie otrzymane wiadomości w czasie rzeczywistym (wiadomości czatu, połączenia itp.); powiadomienie push o wysokiej priorytecie umożliwia tymczasowy dostęp do sieci. |
Zamknij | Ruch, włączony ekran lub alarm zegara | Ekran włączony |
Interakcje z trybem czuwania aplikacji
- Czas spędzony w trybie Doze nie jest wliczany do czasu w stanie gotowości aplikacji.
- Gdy urządzenie jest w stanie Doze, aplikacje nieaktywne mogą wykonywać normalne operacje co najmniej raz dziennie.
Integracja Doze
Gdy Doze jest włączona, urządzenia, które ją obsługują,SENSOR_TYPE_SIGNIFICANT_MOTION
wykonują pełną optymalizację Doze (w tym uproszczoną optymalizację). Urządzenia bez SMD wykonują tylko uproszczoną optymalizację Doze. Android automatycznie wybiera odpowiednie optymalizacje Doze i nie wymaga konfiguracji przez producenta.
Aby włączyć Doze na urządzeniu:
- Sprawdź, czy na urządzeniu jest zainstalowana usługa przesyłania wiadomości w chmurze.
- W pliku konfiguracji nakładki urządzenia
overlay/frameworks/base/core/res/res/values/config.xml
ustaw wartość parametruconfig_enableAutoPowerModes
natrue
: W AOSP ten parametr jest domyślnie ustawiony na<bool name="config_enableAutoPowerModes">true</bool>
false
(Doze disabled).
- Sprawdź, czy wstępnie zainstalowane aplikacje i usługi:
- Skorzystaj z wskazówek dotyczących optymalizacji oszczędzania energii. Szczegółowe informacje znajdziesz w artykule Testowanie i optymalizowanie aplikacji.
LUB
- są wykluczone z funkcji Uśpienie i Czuwanie aplikacji; Więcej informacji znajdziesz w artykule Wyłączanie funkcji.
- Skorzystaj z wskazówek dotyczących optymalizacji oszczędzania energii. Szczegółowe informacje znajdziesz w artykule Testowanie i optymalizowanie aplikacji.
- Sprawdź, czy niezbędne usługi są wyłączone z Doze.
Wskazówki
- W miarę możliwości używaj FCM do przesyłania wiadomości do użytkowników.
- Jeśli powiadomienie musi być wyświetlone natychmiast, użyj wiadomości FCM o wysokim priorytecie.
- Przekaż wystarczającą ilość informacji w ramach początkowego ładunku wiadomości (aby uniknąć niepotrzebnego dostępu do sieci w późniejszym czasie).
- Ustaw alarmy krytyczne za pomocą
setAndAllowWhileIdle()
isetExactAndAllowWhileIdle()
.
Testowanie i optymalizowanie aplikacji
Testuj wszystkie aplikacje (zwłaszcza wstępnie zainstalowane) w trybie Doze. Szczegółowe informacje znajdziesz w artykule Testowanie z użyciem Doze i App Standby.