Dokumentacja usługi na pierwszym planie opisuje bieżące działanie usług na pierwszym planie w Androidzie. Dokumentacja zawiera wskazówki dotyczące sprawdzonych metod dla większości aplikacji, niezależnie od tego, czy są one kierowane na najnowszą wersję Androida.
Ta strona zawiera opis niektórych ostatnich ważnych zmian w usługach na pierwszym planie oraz ich wpływ na aplikacje, które nie są kierowane na najnowszą wersję platformy Android. W wielu przypadkach sprawdzone metody, które były opcjonalne w przypadku aplikacji kierowanych na niższe poziomy interfejsu API, stają się obowiązkowe w przypadku aplikacji kierowanych na wyższe poziomy interfejsu API.
Android 16 (poziom 36 interfejsu API)
Te zmiany dotyczą aplikacji działających na Androidzie 16 lub nowszym, niezależnie od poziomu interfejsu API:
Zadania w tle uruchamiane przez usługę na pierwszym planie muszą teraz przestrzegać odpowiednich limitów czasu działania. Dotyczy to zadań zaplanowanych bezpośrednio za pomocą interfejsu
JobScheduler
, a także zadań utworzonych przez inne biblioteki, takie jak WorkManager czyDownloadManager
.Aby przenosić dane w odpowiedzi na działanie użytkownika, rozważ użycie zadania przesyłania danych inicjowanego przez użytkownika. Te zadania nie są objęte zwykłymi limitami zadań.
Android 15 (poziom 35 interfejsu API)
Aplikacje kierowane na interfejs API na poziomie 35 lub wyższym muszą spełniać te wymagania:
- Wprowadziliśmy nowe ograniczenia dotyczące czasu działania
dataSync
usługi na pierwszym planie. Te ograniczenia są opisane w sekcji Zachowanie usługi na pierwszym planie po upływie limitu czasu. Podobne ograniczenia dotyczą typu usługi na pierwszym planiemediaProcessing
(nowego w Androidzie 15). - Usługi działające na pierwszym planie
BOOT_COMPLETED
nie mogą już uruchamiać niektórych usług działających na pierwszym planie. - Aplikacje, które mają uprawnienia
SYSTEM_ALERT_WINDOW
, mogą uruchamiać usługi na pierwszym planie w tle tylko wtedy, gdy mają widoczne okno nakładki (lub spełniają jedno z innych wyjątków od ograniczeń uruchamiania w tle). Wcześniej wyjątek dla tych aplikacji był szerszy.
Android 14 (poziom 34 interfejsu API)
Aplikacje kierowane na interfejs API na poziomie 34 lub wyższym muszą spełniać te wymagania:
- Musisz zadeklarować wszystkie usługi na pierwszym planie wraz z ich typami.
- Aplikacje muszą poprosić o odpowiednie uprawnienia do wykonywania zadań przez usługę na pierwszym planie. Każdy typ usługi na pierwszym planie ma odpowiadający mu typ uprawnienia. Jeśli na przykład aplikacja uruchamia usługę na pierwszym planie, która korzysta z aparatu, musisz poprosić o uprawnienia
FOREGROUND_SERVICE
iFOREGROUND_SERVICE_CAMERA
. Jeśli aplikacja jest kierowana na interfejs API w wersji 34 lub nowszej i nie prosi o odpowiednie uprawnienia, system zgłasza błądSecurityException
.
Android 12 (poziom 31 interfejsu API)
W przypadku aplikacji kierowanych na interfejs API na poziomie 31 lub wyższym obowiązują te wymagania:
- Aplikacje nie mogą uruchamiać usług na pierwszym planie, gdy są w tle, z kilkoma wyjątkami. Więcej informacji o wyjątkach od tej reguły znajdziesz w artykule Ograniczenia uruchamiania usługi na pierwszym planie z tła.
Android 11 (poziom 30 interfejsu API)
Aplikacje kierowane na interfejs API na poziomie 30 lub wyższym muszą spełniać te wymagania:
- Jeśli usługi na pierwszym planie aplikacji korzystają z aparatu lub mikrofonu, aplikacja musi zadeklarować usługę, odpowiednio z typem usługi
camera
lubmicrophone
.
Android 10 (poziom 29 interfejsu API)
W przypadku aplikacji kierowanych na interfejs API na poziomie 29 lub wyższym obowiązują te wymagania:
- Jeśli usługi na pierwszym planie aplikacji korzystają z informacji o lokalizacji, aplikacja musi zadeklarować usługę z typem usługi
location
.
Android 9 (poziom 28 interfejsu API)
Android 9 wprowadza uprawnienie FOREGROUND_SERVICE
. Aplikacje działające na Androidzie 9, które korzystają z usług na pierwszym planie, muszą mieć to uprawnienie.
Jeśli aplikacja kierowana na interfejs API na poziomie 28 lub wyższym próbuje utworzyć usługę na pierwszym planie bez prośby o uprawnienia FOREGROUND_SERVICE
, system zwraca błąd SecurityException
.