Zarządzanie energią platformy

Aby wydłużyć czas pracy baterii urządzenia, Android może wpływać na stan urządzenia, monitorując jego użycie i stan czuwania. Platforma może przejść w stan uśpienia, aby wstrzymać działanie, gdy urządzenie nie jest używane.

Drzemać

Doze wydłuża czas pracy baterii, opóźniając działanie procesora aplikacji i aktywności sieciowej w tle, gdy urządzenie nie jest używane przez dłuższy czas.

Bezczynne urządzenia w trybie Doze okresowo wchodzą w okno konserwacji, podczas którego aplikacje mogą dokończyć oczekujące prace (synchronizacje, zadania itp.). Następnie funkcja Doze wznawia sen na dłuższy okres czasu, po czym następuje kolejne okno konserwacji. Platforma kontynuuje sekwencję uśpienia/konserwacji drzemki, za każdym razem zwiększając długość okresu bezczynności, aż do osiągnięcia maksymalnie kilku godzin czasu snu. Urządzenie w trybie Doze jest przez cały czas świadome ruchu i natychmiast opuszcza tryb Doze, jeśli zostanie wykryty ruch.

Android 7.0 i nowsze rozszerza funkcję Doze, uruchamiając lżejszy zestaw optymalizacji za każdym razem, gdy użytkownik wyłączy 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ń tak, aby były wyłączone z funkcji Doze. Użytkownicy mogą także wyłączyć określone aplikacje z funkcji Doze, korzystając z menu Ustawienia. Jednak wykluczenie aplikacji może spowodować zużycie baterii urządzenia. Domyślnie funkcja Doze jest wyłączona w AOSP; szczegółowe informacje na temat włączania drzemki można znaleźć w części Integracja drzemki .

Wymagania dotyczące drzemki

Obsługa funkcji Doze wymaga, aby urządzenie posiadało usługę przesyłania wiadomości w chmurze, taką jak Firebase Cloud Messaging (FCM) . Zewnętrzne zdarzenia wyzwalające, takie jak wiadomości w chmurze, mogą tymczasowo obudzić aplikacje do pracy, gdy urządzenie pozostaje w trybie drzemki.

Obsługa pełnej drzemki wymaga również znacznego czujnika ruchu (SMD) w urządzeniu; jednak lekki tryb drzemki w systemie Android 7.0 i nowszych wersjach nie wymaga SMD. Jeśli funkcja Doze jest włączona na urządzeniu, które:

  • Ma SMD, występują optymalizacje pełnego drzemki (w tym lekkie optymalizacje).
  • Nie ma SMD, występują tylko lekkie optymalizacje Doze.

Cykl życia drzemki

Drzemka rozpoczyna się, gdy platforma wykryje, że urządzenie jest bezczynne, i kończy się, gdy wystąpi jedno lub więcej działań spełniających kryteria wyjścia.

Wykrycie

Platforma wykrywa, że ​​urządzenie jest bezczynne, gdy:

  • Urządzenie jest nieruchome (przy użyciu 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 w oknie konserwacyjnym, a następnie ponownie przełączając urządzenie w tryb uśpienia na dłuższe okresy. Podczas snu aktywne są następujące ograniczenia:

  • Aplikacje nie mają dostępu do sieci.
  • Zignorowano wakelocki aplikacji.
  • Alarmy są odroczone. Nie obejmuje alarmów budzika i alarmów ustawionych za pomocą metody setAndAllowWhileIdle() (ograniczone do 1 na 15 minut na aplikację w trybie drzemki). To wyjątek dotyczy aplikacji (takich jak Kalendarz), które muszą wyświetlać powiadomienia o przypomnieniach o wydarzeniach.
  • Skanowania Wi-Fi nie są wykonywane.
  • Synchronizacje SyncAdapter i zadania JobScheduler odroczone do następnego okna konserwacji.
  • Aplikacje odbierające wiadomości SMS i MMS są umieszczane na tymczasowej białej liście, aby mogły dokończyć przetwarzanie.

Wyjście

Platforma opuszcza urządzenie z trybu Doze, gdy wykryje:

  • Interakcja użytkownika z urządzeniem
  • Ruch urządzenia
  • Ekran urządzenia włącza się
  • Nieuchronny alarm budzika

Powiadomienia nie powodują wyjścia urządzenia z trybu Doze.

Android 7.0 i nowsze wersje rozszerzają funkcję Doze, włączając lekki tryb uśpienia przy wyłączonym ekranie, zanim urządzenie przejdzie w stan bezczynności.

Rysunek 1. Tryby drzemki dla urządzeń niestacjonarnych i stacjonarnych
Działanie Drzemać Lekka drzemka
Spust Ekran wyłączony, na baterii, stacjonarny Ekran wyłączony, na baterii (odłączony)
wyczucie czasu Sukcesywnie zwiększające się okresy konserwacji Powtarzane okresy N-minutowe z oknami konserwacyjnymi
Ograniczenia Brak dostępu do sieci, blokady wybudzania lub skanowania GPS/Wi-Fi; alarmy i zadania/synchronizacje odroczone Brak dostępu do sieci; zadania/synchronizacje odroczone, z wyjątkiem okresów konserwacji
Zachowanie Otrzymano tylko powiadomienia push o wysokim priorytecie Wszystkie otrzymane wiadomości w czasie rzeczywistym (wiadomości błyskawiczne, połączenia itp.); wiadomość powiadamiająca o wysokim priorytecie umożliwia tymczasowy dostęp do sieci
Wyjście Ruch, włączony ekran lub alarm budzika Na ekranie

Interakcja z trybem gotowości aplikacji

  • Czas spędzony w trybie drzemki nie wlicza się do stanu gotowości aplikacji.
  • Gdy urządzenie znajduje się w trybie uśpienia, bezczynne aplikacje mogą wykonywać normalne operacje przynajmniej raz dziennie.

Integracyjna drzemka

Gdy drzemka jest włączona, urządzenia obsługujące SENSOR_TYPE_SIGNIFICANT_MOTION wykonują pełne optymalizacje drzemki (w tym lekkie optymalizacje); urządzenia bez SMD wykonują tylko lekkie optymalizacje Doze. Android automatycznie wybiera odpowiednie optymalizacje Doze, a konfiguracja dostawcy nie jest konieczna.

Aby włączyć funkcję Doze na urządzeniu:

  1. Upewnij się, że na urządzeniu zainstalowana jest usługa przesyłania wiadomości w chmurze.
  2. W pliku konfiguracyjnym nakładki urządzenia overlay overlay/frameworks/base/core/res/res/values/config.xml ustaw config_enableAutoPowerModes na true :
    <bool name="config_enableAutoPowerModes">true</bool>
    
    W AOSP ten parametr jest domyślnie ustawiony na false (Drzemka wyłączona).
  3. Upewnij się, że wstępnie załadowane aplikacje i usługi:
  4. Potwierdź, że niezbędne usługi są wyłączone z funkcji Doze.

Porady

Testowanie i optymalizacja aplikacji

Przetestuj wszystkie aplikacje (szczególnie te wstępnie załadowane) w trybie drzemki. Szczegółowe informacje można znaleźć w części Testowanie w trybie drzemki i czuwania aplikacji .