Zasobniki gotowości aplikacji

Android 9 (poziom interfejsu API 28) i nowsze obsługują zasobniki gotowości aplikacji. Zasobniki gotowości aplikacji ułatwiają systemowi priorytetowe traktowanie żądań zasobów przez aplikacje na podstawie tego, jak często i jak często aplikacje są używane. Na podstawie wzorców użytkowania aplikacji każda aplikacja jest umieszczana w jednym z 5 grup priorytetowych. System ogranicza zasoby urządzenia dostępne dla każdej aplikacji w zależności od zasobnika, w którym się ona znajduje.

Zasobniki priorytetowe

System dynamicznie przypisuje każdą aplikację do zasobnika priorytetowego, a w razie potrzeby ponownie je przypisuje. System może polegać na wstępnie wczytanej aplikacji, która za pomocą uczenia maszynowego określa prawdopodobieństwo wykorzystania danej aplikacji i przypisuje aplikacje do odpowiednich grup.

Jeśli na urządzeniu nie ma aplikacji systemowej, system domyślnie sortuje aplikacje według tego, kiedy były używane. Bardziej aktywne aplikacje są przypisywane do zasobników o wyższym priorytecie, dzięki czemu aplikacja ma dostęp do większej liczby zasobów systemowych. W szczególności zasobnik określa, jak często uruchamiane są zadania aplikacji i jak często aplikacja może wywoływać alarmy. Te ograniczenia mają zastosowanie tylko wtedy, gdy urządzenie jest zasilane z baterii. Podczas ładowania urządzenia system nie nakłada tych ograniczeń.

Zasobniki priorytetowe to:

  • Aktywna: aplikacja jest lub była używana niedawno.
  • Zestaw roboczy: aplikacja jest regularnie używana.
  • Częste: w aplikacji jest często używany, ale nie codziennie.
  • Rzadkie: aplikacja nie jest często używana.
  • Z ograniczeniem: aplikacja zużywa dużo zasobów systemu lub może zachowywać się w niewłaściwy sposób.

Oprócz tych zasobników priorytetowych dostępny jest specjalny zasobnik nigdy dla aplikacji, które są instalowane, ale nigdy nie były uruchamiane. System narzuca poważne ograniczenia na te aplikacje.

Poniższe opisy odnoszą się do przypadku nieprzewidywalnych. Jeśli natomiast prognoza wykorzystuje systemy uczące się do przewidywania zachowań, zasobniki są wybierane z uwzględnieniem niedawnych działań użytkownika, a nie ostatniego użycia. Na przykład ostatnio używana aplikacja może trafić do tego rzadko spotykanego zasobnika, ponieważ systemy uczące się przewidują, że mogą nie być używane przez kilka godzin.

Aktywne

Aplikacja znajduje się w zasobniku aktywna, gdy jest używana lub ostatnio używana lub gdy:

  • Uruchamia aktywność.
  • Uruchamia długo działającą usługę na pierwszym planie.
  • To zostało kliknięte przez użytkownika w powiadomieniu.

Jeśli aplikacja znajduje się w aktywnym zasobniku, system nie nakłada żadnych ograniczeń na zadania ani alarmy aplikacji.

Interakcja użytkownika powoduje przypisanie aplikacji jako aktywnych

Na Androidzie 9 (poziom interfejsu API 28) i nowszych, gdy użytkownik wejdzie w określoną interakcję z aplikacją, system tymczasowo umieszcza ją w aktywnym zasobniku. Gdy użytkownik przestanie korzystać z Twojej aplikacji, system umieszcza ją w zasobniku na podstawie historii użytkowania.

Oto przykłady interakcji, które wyzwalają to działanie systemu:

  • użytkownik klika powiadomienie wysłane przez aplikację,

  • Użytkownik wchodzi w interakcję z usługą na pierwszym planie w aplikacji, klikając przycisk multimediów.

  • Użytkownik łączy się z aplikacją podczas interakcji z systemem operacyjnym Android Automotive, w ramach którego aplikacja korzysta z usługi na pierwszym planie lub z CONNECTION_TYPE_PROJECTION.

Zestaw roboczy

Aplikacja znajduje się w zasobniku zestawu roboczego, jeśli działa często, ale nie jest aktywna. Na przykład aplikacja do mediów społecznościowych, którą użytkownik uruchamia prawie codziennie, prawdopodobnie będzie częścią zestawu roboczego. Aplikacje są również awansowane do zasobnika zbioru roboczego, jeśli są używane pośrednio.

Jeśli aplikacja znajduje się w zestawie roboczym, system nakłada niewielkie ograniczenia na możliwość uruchamiania zadań i uruchamiania alarmów. Więcej informacji znajdziesz w sekcji Ograniczenia zarządzania zasilaniem.

Częste

Aplikacja znajduje się w zasobniku często, jeśli jest używana regularnie, ale niekoniecznie codziennie. Na przykład aplikacja do monitorowania treningów, którą użytkownik biega na siłowni, może być częścią grupy częstej.

Jeśli aplikacja znajduje się w częstym zasobniku, system nakłada silniejsze ograniczenia na jej zdolność do uruchamiania zadań i uruchamiania alarmów. Więcej informacji znajdziesz w sekcji Ograniczenia zarządzania zasilaniem.

Rzadko

Aplikacja znajduje się w rzadkim zasobniku, jeśli nie jest używana często. Na przykład aplikacja hotelowa, którą użytkownik uruchamia tylko podczas pobytu w danym hotelu, może znajdować się w rzadkim zasobniku.

Jeśli aplikacja znajduje się w rzadkim zasobniku, system nakłada ścisłe ograniczenia na możliwość uruchamiania zadań i aktywowania alarmów. System ogranicza też możliwość połączenia aplikacji z internetem. Więcej informacji znajdziesz w sekcji Ograniczenia zarządzania zasilaniem.

Z ograniczonym dostępem

Ten zasobnik dodany w Androidzie 12 (poziom interfejsu API 31) ma najniższy priorytet i najwyższe ograniczenia ze wszystkich zasobników. System bierze pod uwagę zachowanie aplikacji, np. częstotliwość korzystania z niej, aby zdecydować, czy umieścić aplikację w zasobniku z ograniczonym dostępem.

Na Androidzie 13 (poziom interfejsu API 33) i nowszych, chyba że aplikacja jest objęta wykluczeniem, system umieszcza ją w zasobniku z ograniczonym dostępem w tych sytuacjach:

  • użytkownik nie korzystał z aplikacji przez określoną liczbę dni; Na Androidzie 12 (poziom interfejsu API 31) i 12L (poziom interfejsu API 32) liczba dni to 45. Android 13 skraca liczbę dni do 8.

  • Aplikacja wywołuje nadmierną liczbę transmisji lub powiązań w ciągu 24 godzin.

Jeśli system umieści Twoją aplikację w zasobniku z ograniczeniami, będą obowiązywać te ograniczenia:

  • W ramach 10-minutowej sesji grupowej możesz uruchamiać zadania raz dziennie. Podczas tej sesji system grupuje zadania aplikacji z zadaniami innych aplikacji.
    • Zadania z ograniczeniami nie są uruchamiane samodzielnie. W tym samym czasie musi być uruchomione lub oczekujące co najmniej jedno inne zadanie, które może obejmować dowolne inne zadanie.
  • Aplikacja może uruchamiać mniej przyspieszonych zadań niż gdy system umieszcza ją w mniej restrykcyjnym zasobniku.
  • Aplikacja może wywoływać 1 alarm dziennie. Może to być alarm dokładny lub niedokładny.

Wykluczenia z ograniczonego zasobnika

Te typy aplikacji nie są wpisywane do zasobnika z ograniczonym dostępem i omijają regułę braku aktywności, nawet na Androidzie 12 i nowszych:

Oceń zasobnik priorytetowy

Aby sprawdzić, do którego zasobnika jest przypisana Twoja aplikacja, wykonaj jedną z tych czynności:

  • Zadzwoń pod numer getAppStandbyBucket().

  • Uruchom to polecenie w oknie terminala:

    adb shell am get-standby-bucket PACKAGE_NAME

System ogranicza dostęp do aplikacji, gdy zostanie ona umieszczona w zasobniku gotowości aplikacji, którego wartość jest większa niż STANDBY_BUCKET_ACTIVE (10).

Sprawdzone metody

Jeśli Twoja aplikacja postępuje zgodnie ze sprawdzonymi metodami dotyczącymi uśpienia i czuwania, późniejsze korzystanie z funkcji zarządzania energią nie jest trudne. Niektóre zachowania aplikacji, które wcześniej sprawdzały się prawidłowo, mogą jednak powodować problemy.

  • Nie próbuj manipulować systemem w taki sposób, by umieścił Twoją aplikację w określonym zasobniku. Stosowana przez system metoda określania priorytetu może się zmienić, a każdy producent urządzeń może stworzyć własną aplikację do grupowania z własnym algorytmem. Zadbaj o to, aby aplikacja działała prawidłowo bez względu na to, w jakim zasobniku się znajduje.
  • Jeśli aplikacja nie ma działania programu uruchamiającego, może nigdy nie zostać awansowana do aktywnego zasobnika. Rozważ przeprojektowanie aplikacji, aby uwzględnić taką aktywność.
  • Jeśli użytkownicy nie mogą wejść w interakcję z powiadomieniami z aplikacji, nie będą mogli aktywować promocji aplikacji w aktywnym zasobniku. W takim przypadku rozważ modyfikację powiadomień, które umożliwiają użytkownikom interakcję. Niektóre wskazówki znajdziesz w artykule o wzorcach projektowania powiadomień Material Design.

  • Jeśli aplikacja nie wyświetli powiadomienia po otrzymaniu o wysokim priorytecie wiadomości Komunikacji w chmurze Firebase (FCM), użytkownik nie będzie mógł z niej korzystać, więc nie będzie mógł jej przenieść do aktywnego zasobnika. W rzeczywistości jedynym przeznaczeniem wiadomości o wysokim priorytecie w FCM jest przekazanie powiadomienia użytkownikowi, więc taka sytuacja nie może mieć miejsca. Jeśli w wersji 12L (poziom interfejsu API 32) niewłaściwie oznaczysz wiadomość w FCM jako wysoki priorytet, mimo że nie wywołuje ona interakcji użytkownika, może to spowodować obniżenie priorytetu przyszłych wiadomości.

  • Jeśli aplikacje są podzielone na kilka pakietów, mogą one znajdować się w różnych zasobnikach i mieć różne poziomy dostępu. Przetestuj te aplikacje przy użyciu pakietów przypisanych do różnych zasobników, aby sprawdzić, czy działają prawidłowo.