Aby wydłużyć żywotność baterii urządzenia, Android może wpływać na stan urządzenia, monitorując jego użycie i czuwanie. Platforma może wejść w stan uśpienia, aby wstrzymać działania z biegu, gdy urządzenie nie jest używane.
Drzemać
Doze wydłuża czas pracy na baterii, opóźniając działanie procesora aplikacji w tle i aktywność sieciową, gdy urządzenie nie jest używane przez dłuższy czas.
Bezczynne urządzenia w trybie Doze okresowo przechodzą do okna konserwacji, podczas którego aplikacje mogą wykonywać oczekujące prace (synchronizacje, zadania itp.). Następnie drzemka wznawia sen na dłuższy czas, po czym następuje kolejne okno konserwacji. Platforma kontynuuje sekwencję uśpienia/konserwacji drzemki, za każdym razem zwiększając długość bezczynności, aż do osiągnięcia maksymalnie kilku godzin snu. Przez cały czas urządzenie w trybie drzemki jest świadome ruchu i natychmiast opuszcza drzemkę w przypadku wykrycia ruchu.
Android 7.0 i nowszy rozszerza funkcję Doze, aby uruchamiać lżejszy zestaw optymalizacji za każdym razem, gdy użytkownik wyłącza ekran urządzenia, nawet gdy użytkownik nadal się porusza, co zapewnia dłuższą żywotność baterii.
Krytyczne usługi systemowe są zazwyczaj konfigurowane przez producentów urządzeń w celu wyłączenia ich z funkcji Doze. Użytkownicy mogą również wykluczyć określone aplikacje z funkcji Doze za pomocą menu Ustawienia. Jednak wyłączenie aplikacji może spowodować rozładowanie baterii urządzenia. Domyślnie Doze jest wyłączone w AOSP; szczegółowe informacje na temat włączania funkcji Doze można znaleźć w sekcji Integracja funkcji Doze .
Wymagania dotyczące drzemki
Obsługa funkcji Doze wymaga, aby urządzenie miało usługę przesyłania wiadomości w chmurze, taką jak Firebase Cloud Messaging (FCM) . Zdarzenia wyzwalaczy zewnętrznych, takie jak wiadomości w chmurze, mogą tymczasowo wybudzać aplikacje do pracy, gdy urządzenie pozostaje w trybie drzemki.
Obsługa pełnej drzemki wymaga również znacznego czujnika ruchu (SMD) na urządzeniu; jednak lekki tryb drzemki w Androidzie 7.0 i nowszych nie wymaga SMD. Jeśli funkcja Doze jest włączona na urządzeniu, które:
- Ma SMD, występują pełne optymalizacje Doze (w tym lekkie optymalizacje).
- Nie ma SMD, występują tylko lekkie optymalizacje Doze.
Cykl życia drzemki
Doze rozpoczyna się, gdy platforma wykryje, że urządzenie jest bezczynne i kończy się, gdy wystąpi jedno lub więcej działań kryteriów wyjścia.
Wykrycie
Platforma wykrywa, że urządzenie jest bezczynne, gdy:
- Urządzenie jest nieruchome (za pomocą SMD).
- Ekran urządzenia jest wyłączony przez pewien czas.
Tryb drzemki nie włącza się, gdy urządzenie zasilane bateryjnie jest podłączone do ładowarki.
Podczas drzemki
Platforma próbuje utrzymać system w stanie uśpienia, okresowo wznawiając normalne działanie podczas okna konserwacji, a następnie przywracając urządzenie do stanu uśpienia na dłuższe, powtarzające się okresy. Podczas snu aktywne są następujące ograniczenia:
- Aplikacje nie mają dostępu do sieci.
- Wakelocki aplikacji zostały zignorowane.
- Alarmy są odroczone. Wyklucza alarmy budzika i alarmy ustawione za pomocą
setAndAllowWhileIdle()
(ograniczone do 1 na 15 minut na aplikację w trybie drzemki). To zwolnienie dotyczy aplikacji (takich jak Kalendarz), które muszą wyświetlać powiadomienia o przypomnieniach o wydarzeniach. - Skanowanie Wi-Fi nie jest wykonywane.
-
SyncAdapter
synchronizuje i zadaniaJobScheduler
odroczone do następnego okna obsługi. - Aplikacje odbierające SMS-y i MMS-y są umieszczane na tymczasowej białej liście, aby mogły dokończyć przetwarzanie.
Wyjście
Platforma opuszcza urządzenie z funkcji Doze, gdy wykryje:
- Interakcja użytkownika z urządzeniem
- Ruch urządzenia
- Włącza się ekran urządzenia
- Nadciągający alarm Budzik
Powiadomienia nie powodują wyjścia urządzenia z trybu drzemki.
Android 7.0 i nowszy rozszerza funkcję Doze, włączając lekki tryb uśpienia, gdy ekran jest wyłączony, zanim urządzenie stanie się bezczynne.
Akcja | Drzemać | Lekka drzemka |
---|---|---|
Cyngiel | Ekran wyłączony, na baterii, stacjonarny | Ekran wyłączony, na baterii (odłączony) |
wyczucie czasu | Sukcesywnie zwiększające się okresy z utrzymaniem | Powtarzane okresy N-minutowe z oknami konserwacyjnymi |
Ograniczenia | Brak dostępu do sieci, blokady budzenia lub skanowania GPS/Wi-Fi; alarmy i zadania/synchronizacje odroczone | Brak dostępu do sieci; zadania/synchronizacje są odroczone z wyjątkiem okresów konserwacyjnych |
Zachowanie | Odebrano tylko powiadomienia push o wysokim priorytecie | Odebrane wszystkie wiadomości w czasie rzeczywistym (wiadomości błyskawiczne, połączenia itp.); wiadomość push o wysokim priorytecie umożliwia tymczasowy dostęp do sieci |
Wyjście | Alarm ruchu, włączony ekran lub budzik | Na ekranie |
Interakcja z trybem gotowości aplikacji
- Czas spędzony w trybie drzemki nie wlicza się do trybu czuwania aplikacji.
- Gdy urządzenie jest w trybie drzemki, bezczynne aplikacje mogą wykonywać normalne operacje przynajmniej raz dziennie.
Integracja Doze
Gdy funkcja drzemki jest włączona, urządzenia obsługujące SENSOR_TYPE_SIGNIFICANT_MOTION
wykonują pełne optymalizacje funkcji drzemki (w tym lekkie optymalizacje); urządzenia bez SMD wykonują tylko lekkie optymalizacje Doze. Android automatycznie wybiera odpowiednie optymalizacje funkcji Doze, a konfiguracja dostawcy nie jest konieczna.
Aby włączyć funkcję Doze dla urządzenia:
- Upewnij się, że urządzenie ma zainstalowaną usługę przesyłania wiadomości w chmurze.
- W pliku konfiguracyjnym nakładki urządzenia overlay
overlay/frameworks/base/core/res/res/values/config.xml
, ustawconfig_enableAutoPowerModes
natrue
:<bool name="config_enableAutoPowerModes">true</bool>
W AOSP ten parametr jest domyślnie ustawiony nafalse
(Drzemka wyłączona). - Potwierdź, że wstępnie załadowane aplikacje i usługi:
- Skorzystaj ze wskazówek dotyczących optymalizacji oszczędzania energii . Aby uzyskać szczegółowe informacje, zobacz Testowanie i optymalizowanie aplikacji .
LUB
- Są zwolnieni z funkcji drzemki i czuwania aplikacji. Aby uzyskać szczegółowe informacje, zobacz Zwolnienie aplikacji .
- Skorzystaj ze wskazówek dotyczących optymalizacji oszczędzania energii . Aby uzyskać szczegółowe informacje, zobacz Testowanie i optymalizowanie aplikacji .
- Potwierdź, że niezbędne usługi są zwolnione z funkcji Doze.
Porady
- Jeśli to możliwe, używaj FCM do wysyłania wiadomości .
- Jeśli Twoi użytkownicy muszą od razu zobaczyć powiadomienie, użyj wiadomości FCM o wysokim priorytecie .
- Podaj wystarczającą ilość informacji w początkowej zawartości wiadomości (aby uniknąć niepotrzebnego późniejszego dostępu do sieci).
- Ustaw krytyczne alarmy za pomocą
setAndAllowWhileIdle()
isetExactAndAllowWhileIdle()
.
Testowanie i optymalizacja aplikacji
Przetestuj wszystkie aplikacje (zwłaszcza aplikacje wstępnie załadowane) w trybie drzemki. Aby uzyskać szczegółowe informacje, zapoznaj się z rozdziałem Testowanie z funkcją drzemki i czuwania aplikacji .