Aby wydłużyć czas pracy urządzenia na baterii, Android może wpływać na stan urządzenia przez: monitorowanie aktywności i korzystania z urządzenia. Platforma może wprowadzić stan usypiać, aby wstrzymać biegi, gdy urządzenie nie jest używane.
Uśpienie – informacje
Uśpienie wydłuża czas pracy na baterii, wstrzymując działanie procesora w tle, aktywności w sieci, gdy urządzenie nie jest używane przez dłuższy czas.
Urządzenia nieaktywne w trybie Uśpienie okresowo rozpoczynają okres konserwacji, w którym aplikacje mogą wykonywać oczekujące zadania (synchronizacje, zadania itp.). Uśpienie i wznowienie sen na dłuższy czas, a potem kolejny okres konserwacji. platforma kontynuuje sekwencję uśpienia/konserwacji, zwiększając długość nieaktywny za każdym razem, aż do osiągnięcia maksymalnego czasu snu po kilku godzinach. Wcale urządzenie w trybie Uśpienie pozostaje świadome ruchu i natychmiast wychodzi z funkcji Uśpienie. po wykryciu ruchu.
Android 7.0 i nowsze rozszerzenia rozszerzają tryb Uśpienia, aby uruchomić mniejszy zestaw optymalizacji za każdym razem, gdy użytkownik wyłączy ekran urządzenia, nawet jeśli użytkownik nadal będzie to robić możesz się swobodnie poruszać, co wydłuża czas pracy na baterii.
Kluczowe usługi systemowe są zwykle konfigurowane przez producentów urządzeń w taki sposób, są zwolnione z funkcji Uśpienie. Użytkownicy mogą też wyłączyć wybrane aplikacje z funkcji Uśpienie, Menu Ustawienia. Jednak wykluczenie aplikacji może spowodować wyczerpanie się baterii. Domyślnie uśpienie jest wyłączone w AOSP. w przypadku Szczegółowe informacje na temat włączania Uśpienia znajdziesz w sekcji Integrowanie uśpienia.
Wymagania dotyczące uśpienia
Obsługa uśpienia wymaga, aby urządzenie obsługiwało usługę przesyłania wiadomości w chmurze, taką jak Firebase Komunikacja w chmurze (FCM). zdarzenia aktywatora zewnętrznego, takie jak wiadomości w chmurze, może tymczasowo wybudzić aplikacje w celu wykonania pracy, dopóki urządzenie jest w trybie uśpienia.
Pełna obsługa funkcji uśpienia wymaga również istotne czujnik ruchu (SMD) na urządzeniu; ale lekki tryb uśpienia Android 7.0 i nowszy nie wymaga procesora SMD. Jeśli uśpienie jest włączone na urządzeniu które:
- Ma SMD, następuje pełna optymalizacja w trybie uśpienia (obejmuje ).
- Nie ma procesora SMD. Wykonywane są tylko uproszczone optymalizacje w trybie uśpienia.
Cykl uśpienia
Uśpienie rozpoczyna się, gdy platforma wykryje, że urządzenie jest nieaktywne, kończy się, gdy wystąpi co najmniej 1 działanie związane z kryterium wyjścia.
Platforma wykrywa, że urządzenie jest bezczynne, gdy:
- Urządzenie jest nieruchome (z procesora SMD).
- Ekran urządzenia jest wyłączony na pewien czas.
Tryb uśpienia nie włącza się, gdy urządzenie z baterią jest podłączone do ładowarki.
W trakcie uśpienia
Platforma okresowo próbuje utrzymać system w stanie uśpienia wznowienie normalnego działania w okresie konserwacji, a następnie zwrot urządzenia spać na dłużej. Podczas snu: aktywne ograniczenia:
- Aplikacje nie mają dostępu do sieci.
- Blokady uśpienia aplikacji zostały zignorowane.
- Alarmy są odłożone. Nie obejmuje alarmów ustawionych za pomocą budzika
setAndAllowWhileIdle()
(ograniczone do 1 na 15 minut na aplikację w trybie Uśpienie). To wykluczenie jest przeznaczone dla aplikacji (takich jak Kalendarz), które muszą wyświetlać powiadomienia o przypomnieniach o wydarzeniach. - Skanowanie Wi-Fi nie jest wykonywane.
- Synchronizacje
SyncAdapter
i zadania odroczone:JobScheduler
aż do kolejnego okresu konserwacji. - Aplikacje odbierające SMS-y i MMS-y są umieszczane na tymczasowej białej liście, mogą dokończyć proces przetwarzania.
Zakończ
Platforma wyłącza urządzenie z uśpienia, gdy wykryje:
- Interakcja użytkownika z urządzeniem
- Ruch urządzenia
- Ekran urządzenia włącza się
- Zbliżający się budzik
Powiadomienia nie powodują wycofania urządzenia z trybu uśpienia.
Android 7.0 i nowsze rozszerzają funkcje Uśpienia przez włączenie lekkiego trybu uśpienia po wyłączeniu ekranu, zanim urządzenie stanie się nieaktywne.
Rysunek 1. Tryby uśpienia na urządzeniach niestacjonarnych i stacjonarnych.
Działanie | Uśpienie | Lekkie drzemanie |
---|---|---|
Wyzwalacz | Wyłączony ekran, na baterii, brak aktywności | Ekran wyłączony, na baterii (odłączony) |
Czas | Stopniowe zwiększanie liczby okresów z konserwacją | Powtarzające się N-minutowe okresy z okresami konserwacji |
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 |
Działanie | Otrzymujesz tylko powiadomienia push o wysokim priorytecie | wszystkie wiadomości w czasie rzeczywistym (wiadomości czatu, połączenia itp.); powiadomienie push o wysokim priorytecie umożliwia tymczasowy dostęp do sieci |
Zakończ | Ruch, włączony ekran lub budzik | Ekran włączony |
Interakcja z aplikacją w trybie gotowości
- Czas w trybie Uśpienie nie jest wliczany do czasu czuwania aplikacji.
- Gdy urządzenie jest w trybie uśpienia, nieaktywne aplikacje mogą działać normalnie co najmniej raz dziennie.
Integracja z uśpieniem
Po włączeniu Uśpienia urządzenia obsługujące
SENSOR_TYPE_SIGNIFICANT_MOTION
przeprowadzić pełne optymalizacje uśpienia (w tym drobne optymalizacje);
na urządzeniach bez procesora SMD przeprowadzają tylko lekkie optymalizacje uśpienia. Android,
automatycznie wybiera odpowiednie optymalizacje Doze i dostawcę
.
Aby włączyć Uśpienie na urządzeniu:
- Sprawdź, czy na urządzeniu jest zainstalowana usługa komunikacji w chmurze.
- W pliku konfiguracji nakładki urządzenia
overlay/frameworks/base/core/res/res/values/config.xml
, ustawconfig_enableAutoPowerModes
dotrue
:<bool name="config_enableAutoPowerModes">true</bool>
W AOSP ten parametr ma domyślnie wartośćfalse
(funkcja uśpienia wyłączona).
- Sprawdź, czy wstępnie załadowane aplikacje i usługi:
- Użyj
oszczędność energii
ze wskazówkami dotyczącymi optymalizacji. Szczegółowe informacje można znaleźć w sekcjach Testowanie i
przy optymalizacji aplikacji.
LUB
- są wyłączone z funkcji Uśpienie i Czuwanie aplikacji. Więcej informacji: Wykluczanie aplikacji.
- Użyj
oszczędność energii
ze wskazówkami dotyczącymi optymalizacji. Szczegółowe informacje można znaleźć w sekcjach Testowanie i
przy optymalizacji aplikacji.
- Potwierdź, że niezbędne usługi są zwolnione z funkcji Uśpienie.
Wskazówki
- Jeśli to możliwe, używaj FCM do w dół wiadomości.
- Jeśli użytkownicy muszą od razu zobaczyć powiadomienie, użyj FCM, wiadomość o wysokim priorytecie.
- Podaj wystarczające informacje na początku wiadomość ładunek (aby uniknąć niepotrzebnego późniejszego dostępu do sieci).
- Ustawiaj krytyczne alarmy w aplikacji
setAndAllowWhileIdle()
orazsetExactAndAllowWhileIdle()
Testowanie i optymalizowanie aplikacji
Testuj wszystkie aplikacje (zwłaszcza te wstępnie załadowane) w trybie uśpienia. Więcej informacji: Testowanie z funkcjami Uśpienie i Czuwanie aplikacji.