Ograniczenia dotyczące rozpoczynania działań w tle

Android 10 (poziom interfejsu API 29) i wyższe ograniczenia miejsc dotyczące tego, kiedy aplikacje mogą rozpoczynać aktywność, gdy działają w tle. Te ograniczenia pomagają zminimalizować przerwy w działaniu użytkownika i zapewnić mu większą kontrolę nad tym, co wyświetla się na ekranie.

Ten przewodnik przedstawia powiadomienia jako alternatywę dla rozpoczynania działań w tle. Wskazuje też konkretne przypadki, w których dane ograniczenie nie ma zastosowania.

Zamiast tego wyświetlaj powiadomienia

W prawie wszystkich przypadkach aplikacje działające w tle muszą wyświetlać powiadomienia pilne na czas, aby przekazywać użytkownikowi pilne informacje. Są to na przykład informacje o przychodzących połączeniach telefonicznych czy aktywnym budziku.

Ten oparty na powiadomieniach system alertów i przypomnień ma kilka zalet:

  • Podczas korzystania z urządzenia użytkownik widzi powiadomienie z ostrzeżeniem, dzięki któremu może na nie zareagować. Użytkownik zachowuje aktualny kontekst i ma kontrolę nad treściami, które widzi na ekranie.
  • Powiadomienia ograniczone czasowo podlegają regułom Nie przeszkadzać użytkownika. Na przykład po włączeniu trybu Nie przeszkadzać użytkownicy mogą zezwolić na dzwonienie tylko od określonych kontaktów lub od dzwoniących powtórnie.
  • Gdy ekran urządzenia jest wyłączony, natychmiast uruchamia się intencja pełnoekranowa.
  • Na ekranie Ustawienia urządzenia użytkownik może sprawdzić, które aplikacje wysyłały ostatnio powiadomienia, w tym z określonych kanałów powiadomień. Na tym ekranie użytkownik może dostosować swoje ustawienia powiadomień.

Kiedy aplikacje mogą rozpoczynać aktywność

Aplikacje działające na Androidzie 10 lub nowszym mogą rozpoczynać działania, gdy spełniony jest co najmniej jeden z tych warunków:

  • Aplikacja ma widoczne okno, np. aktywność na pierwszym planie.
  • Aplikacja ma aktywność w stosie wstecznym zadania na pierwszym planie.
  • Aplikacja ma aktywność w wstecznym stosie istniejącego zadania na ekranie Ostatnie.

  • W aplikacji występuje aktywność, która rozpoczęła się niedawno.

  • Niedawno aplikacja o nazwie finish() wykonała działanie. Dotyczy to tylko sytuacji, gdy w momencie wywołania funkcji finish() aplikacja miała aktywność na pierwszym planie lub działanie na tylnym stosie zadania na pierwszym planie.

  • Aplikacja ma jedną z tych usług powiązanych z systemem. W przypadku tych usług może być konieczne uruchomienie interfejsu użytkownika.

  • Aplikacja ma usługę powiązaną z inną, widoczną aplikacją. Aplikacja powiązana z usługą musi być widoczna dla aplikacji w tle, aby mogła rozpocząć działania.

  • Aplikacja otrzymuje powiadomienie PendingIntent z systemu. W przypadku oczekujących intencji dotyczących usług i odbiorników aplikacja może rozpoczynać działania przez kilka sekund po wysłaniu oczekującej intencji.

  • Aplikacja odbiera sygnał PendingIntent wysyłany z innej, widocznej aplikacji.

  • Aplikacja odbiera komunikat systemowy, gdy ma uruchomić interfejs użytkownika. Przykłady to ACTION_NEW_OUTGOING_CALL i SECRET_CODE_ACTION. Aplikacja może rozpoczynać aktywność przez kilka sekund po wysłaniu transmisji.

  • Aplikacja jest powiązana z urządzeniem towarzyszącym za pomocą interfejsu API CompanionDeviceManager. Umożliwia on aplikacji uruchamianie działań w odpowiedzi na działania wykonywane przez użytkownika na sparowanym urządzeniu.

  • Ta aplikacja jest kontrolerem zasad urządzeń działającym w trybie właściciela urządzenia. Przykładowe zastosowania obejmują w pełni zarządzane urządzenia firmowe, a także urządzenia specjalne, takie jak kioski i treści informacyjno-reklamowe.

  • Aplikacja przyzna uprawnienia SYSTEM_ALERT_WINDOW.