Zarządzanie zasilaniem platformy z funkcjami Uśpienie

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 i JobScheduler 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:

  1. Sprawdź, czy na urządzeniu jest zainstalowana usługa przesyłania wiadomości w chmurze.
  2. W pliku konfiguracji nakładki urządzenia overlay/frameworks/base/core/res/res/values/config.xml ustaw wartość parametru config_enableAutoPowerModes na true:
    <bool name="config_enableAutoPowerModes">true</bool>
    
    W AOSP ten parametr jest domyślnie ustawiony na false (Doze disabled).
  3. Sprawdź, czy wstępnie zainstalowane aplikacje i usługi:
  4. Sprawdź, czy niezbędne usługi są wyłączone z Doze.

Wskazówki

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.