Limity zasobów zarządzania zasilaniem

System priorytetowo traktuje żądania aplikacji o zasoby na podstawie stanu urządzenia, stanu aplikacji i poziomu czuwania aplikacji.

System Android może egzekwować limity zasobów na 2 sposoby. Jednym ze sposobów na zoptymalizowanie wykorzystania zasobów jest odroczenie wykonania zadania do czasu, gdy urządzenie opuści stan niskiego zużycia energii, np. tryb Doze. Na przykład regularne zadania i nieprecyzyjne alarmy są opóźniane, aby zostały wykonane po wyjściu urządzenia z trybu uśpienia.

Innym sposobem jest ograniczenie możliwości uruchamiania urządzenia przez aplikację i wykonywania przez nią pracy na podstawie bieżącego zasobu w trybie gotowości. System może zmniejszyć zarówno częstotliwość (jak często aplikacja wybudza urządzenie), jak i łączny czas (czas, przez jaki urządzenie pozostaje aktywne). Jeśli na przykład aplikacja znajduje się w grupie rzadko używanych aplikacji, może wykonywać zaplanowane zadania przez łączny czas 10 minut w ciągu 24 godzin.

Pamiętaj, że WorkManager używa JobSchedulera do planowania zadań, gdy aplikacja jest niewidoczna, a workery są więc objęci limitami zasobów zadań.

Więcej informacji o ograniczeniach znajdziesz w tych artykułach:

  1. Limity zasobów na podstawie stanu urządzenia
  2. Limity zasobów na podstawie stanu aplikacji
  3. Limity zasobów na podstawie puli aplikacji w stanie gotowości

Pamiętaj, że stan urządzenia i aplikacji może zastąpić limity dotyczące puli aplikacji w stanie gotowości. Jeśli np. urządzenie jest ładowane, system zezwala aplikacjom w grupie rzadko używania w stanie gotowości na wykonywanie zadań przez ponad 10 minut w ciągu 24 godzin.

Wystąpiły zmiany zachowania, które również wpłynęły na limity zasobów. Więcej informacji znajdziesz w artykule Zmiany w zachowaniu Androida, które wpływają na limity zasobów.

Limity zasobów na podstawie stanu urządzenia

System może też zwolnić z ograniczeń dotyczących zasobów lub narzucić je w zależności od stanu urządzenia. Na przykład urządzenie w stanie ładowania ma nieograniczony dostęp do zasobów niezależnie od tego, do której grupy w trybie gotowości należy aplikacja.

Stan urządzenia

Praca

Alarmy

Dostęp do sieci

Firebase Cloud Messaging

Ładowanie

Brak limitów wykonań z wyjątkiem zasobnika w trybie gotowości ograniczonego

Brak limitów wykonywania dla wszystkich puli w stanie gotowości i stanów procesu, z wyjątkiem sytuacji, gdy użytkownik ręcznie ograniczy zużycie baterii przez aplikację.

Brak ograniczeń

Brak ograniczeń

Ekran włączony

Limity wykonania są egzekwowane na podstawie zasobnika rezerwowego.

Limity wykonywania są egzekwowane na podstawie procesu aplikacji i zasobnika w stanie gotowości.

Dostęp zależy od zasobnika w stanie gotowości lub stanu procesu aplikacji

Brak ograniczeń

Wyłączony ekran i tryb Doze

Limity wykonywania są egzekwowane na podstawie zasobnika w trybie gotowości, a wykonanie jest odkładane do okna konserwacji doze

Limity wykonania są egzekwowane na podstawie zasobnika rezerwowego.

Zwykłe alarmy: odroczone do okresu konserwacji trybu DND

Alarmy podczas bezczynności: ograniczone do 7 na godzinę

Ograniczenia podczas trybu oszczędzania baterii

Wysoki priorytet: brak limitów wykonań

Priorytet normalny: opóźnione do okresu konserwacji trybu uśpienia

Limity zasobów na podstawie stanu aplikacji

To, czy system wymusza limity zasobów w przypadku aplikacji w stanie gotowości, zależy od znaczenia procesu aplikacji. Aby poznać różne poziomy ważności procesów, zapoznaj się z artykułem ActivityManager.RunningAppProcessInfo.importance.

Użytkownik urządzenia może też ręcznie zastąpić optymalizacje zarządzania energią aplikacji, co zastąpi limity w przypadku aplikacji w stanie gotowości.

Stan aplikacji

Praca

Alarmy

Sieć

proces aplikacji jest widoczny lub znajduje się na pierwszym planie;

Brak limitów wykonań

Brak limitów częstotliwości

Brak ograniczeń

proces aplikacji uruchamia usługę na pierwszym planie,

Limity wykonania są egzekwowane na podstawie zasobnika rezerwowego***

Ograniczenia częstotliwości są egzekwowane na podstawie puli rezerwowej.

Brak ograniczeń

Użytkownik ręcznie ogranicza zużycie baterii przez aplikację

Wykonanie jest ograniczone

Wykonanie jest ograniczone

Dostęp zależy od zachowania zasobnika w trybie gotowości

Użytkownik ręcznie odblokowuje dostęp do baterii aplikacji

Limit wykonań jest duży***

Brak limitów wykonań

Nieograniczony, chyba że urządzenie jest w trybie oszczędzania danych

*** Zachowanie limitu wykonania zadań zmieniło się w Androidzie 16. Przed Androidem 16 nie było limitu wykonywania, gdy aplikacja uruchamiała usługę na pierwszym planie lub użytkownik nie ograniczał zużycia baterii przez aplikację.

Limity zasobów na podstawie zasobnika aplikacji w trybie gotowości

Uwaga: wartości w tej tabeli nie gwarantują czasu wykonania, ponieważ inne warunki urządzenia lub zmiany w grupach mogą wpływać na ograniczenia zasobów. Wartości te mogą się też zmienić w kolejnych wersjach Androida.

Zwykłe zadania, przyspieszone zadania, alarmy i dostęp do sieci mogą być ograniczone na podstawie zasobnika aplikacji w stanie gotowości. Zapoznaj się z zależnymi od aplikacji zasobnikami w trybie gotowości i stosuj się do tych przybliżonych ograniczeń zarządzania energią. Aby uzyskać optymalną wydajność, stosuj się do sprawdzonych metod dotyczących trybu gotowości aplikacjioptymalizuj zużycie baterii w przypadku interfejsów API do planowania zadań.

Pamiętaj, że od Androida 13 grupa w stanie gotowości aplikacji nie określa już, ile wiadomości FCM o wysokiej priorytecie może używać aplikacja.

Zasobnik czuwania aplikacji

zwykłe zadania*

Zadania priorytetowe**

Alarmy

Sieć

Aktywne:

Do 20 minut w ciągu 60-minutowego okresu***

Do 30 minut w ciągu 24 godzin***

Brak limitów wykonań

Brak ograniczeń

Zestaw roboczy:

Do 10 minut w ciągu 4 godzin

Do 15 minut w ciągu 24 godzin

Ograniczona do 10 na godzinę

Brak ograniczeń

Często:

Do 10 minut w ciągu 12 godzin

Do 10 minut w ciągu 24 godzin

Ograniczona do 2 na godzinę

Brak ograniczeń

Rzadkie:

Do 10 minut w ciągu 24 godzin

Do 10 minut w ciągu 24 godzin

Maksymalna liczba to 1 na godzinę.

Wyłączony

Ograniczony dostęp:

Raz dziennie przez maksymalnie 10 minut

Do 5 minut w ciągu 24 godzin

1 alarm dziennie: alarm precyzyjny lub alarm nieprecyzyjny.

Wyłączony

* Zwykłe zadania to zadania, które nie używają flag setUserInitiated(true) ani setExpedited(true) w JobScheduler lub przyspieszonych wątków w WorkManager.

** Zadania przyspieszone mają osobny limit wykonania niż zadania zwykłe. Można je skonfigurować w WorkManagerze tak, aby kontynuowały działanie z wykorzystaniem limitów wykonania zwykłych zadań, gdy limity zadań przyspieszonych zostaną wyczerpane.

*** Zachowanie limitu wykonania zadań zmieniło się w Androidzie 16. Przed Androidem 16 nie było limitu wykonywania, gdy aplikacja była w grupie aktywnego trybu gotowości.

Zmiany zachowania Androida, które wpływają na limity zasobów

W ramach tych aktualizacji Androida wprowadzono zmiany w limitach zasobów aplikacji.

Android 16

Zmiana zachowania optymalizacji limitu zasobów JobScheduler

Android dopasował limit czasu wykonywania zadań wykonywanych w trybie zwykłym i przyspieszonym na podstawie tych czynników:

  1. W którym zbiorze aplikacji w stanie gotowości znajduje się aplikacja
  2. Jeśli zadanie rozpocznie wykonywanie, gdy aplikacja jest w stanie najwyższym
  3. Jeśli zadanie jest wykonywane podczas działania usługi na pierwszym planie

Android 13

Zmiany w zachowaniu limitów wiadomości w ramach Komunikacji w chmurze Firebase (FCM) o wysokiej priorytecie

Android 9

Wprowadzamy funkcję grup czuwania aplikacji

Android 9 wprowadza nową funkcję zarządzania baterią, czyli grupy w trybie gotowości aplikacji. Zasoby w stanach gotowości pomagają systemowi ustalać priorytety żądań zasobów przez aplikacje na podstawie tego, jak często i jak ostatnio były używane. Na podstawie wzorców korzystania z aplikacji każda z nich jest umieszczana w jednym z 5 segmentów priorytetowych. System ogranicza zasoby urządzenia dostępne dla każdej aplikacji na podstawie tego, do której grupy należy aplikacja.