Dokumentacja usług na pierwszym planie opisuje bieżące działanie usług na pierwszym planie w Androidzie. Dokumentacja zawiera wskazówki dotyczące sprawdzonych metod w przypadku większości aplikacji, niezależnie od tego, czy są one przeznaczone na najnowszą wersję Androida.
Na tej stronie opisujemy najważniejsze zmiany wprowadzone ostatnio 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)
Poniższe zmiany dotyczą aplikacji, które działają na Androidzie 16 lub nowszym, niezależnie od tego, na jaki poziom API są kierowane:
Zadania w tle uruchamiane z usługi na pierwszym planie muszą teraz przestrzegać odpowiednich limitów czasu działania. Obejmuje to zadania zaplanowane bezpośrednio za pomocą
JobScheduler
, a także zadania utworzone przez inne biblioteki, takie jak WorkManager czyDownloadManager
.Jeśli chcesz przesyłać dane w odpowiedzi na działanie użytkownika, rozważ użycie zadania przesyłania danych inicjowanego przez użytkownika. Te miejsca pracy są zwolnione z limitów zwykłych miejsc pracy.
Android 15 (poziom 35 interfejsu API)
Poniższe wymagania dotyczą aplikacji kierowanych na interfejs API na poziomie 35 lub wyższym:
- Wprowadziliśmy nowe ograniczenia dotyczące czasu działania
dataSync
usługi na pierwszym planie. Ograniczenia te opisano w sekcji Zachowanie limitu czasu usługi działającej na pierwszym planie. Podobne ograniczenia dotyczą (nowego w Androidzie 15)mediaProcessing
typu usługi działającej na pierwszym planie. BOOT_COMPLETED
usługi działające na pierwszym planie nie mogą już uruchamiać niektórych usług działających na pierwszym planie.- Aplikacje, które mają uprawnienie
SYSTEM_ALERT_WINDOW
, mogą uruchamiać usługi działające na pierwszym planie w tle tylko wtedy, gdy mają obecnie widoczne okno nakładki (lub gdy spełniają jeden z innych wyjątków od ograniczeń dotyczących uruchamiania w tle). Wcześniej zwolnienie z tego obowiązku w przypadku tych aplikacji było szersze.
Android 14 (poziom 34 interfejsu API)
W przypadku aplikacji kierowanych na interfejs API na poziomie 34 lub wyższym obowiązują te wymagania:
- Musisz zadeklarować wszystkie usługi na pierwszym planie wraz z ich typami.
- Aplikacje muszą prosić o odpowiedni typ uprawnień w zależności od rodzaju pracy, jaką będzie wykonywać usługa na pierwszym planie. Każdy typ usługi na pierwszym planie ma odpowiedni typ uprawnienia. Jeśli na przykład aplikacja uruchamia usługę działającą 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 na poziomie 34 lub wyższym 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 działających na pierwszym planie, gdy działają w tle, z kilkoma wyjątkami. Więcej informacji i wyjątki od tej reguły znajdziesz w artykule Ograniczenia dotyczące uruchamiania usługi na pierwszym planie w tle.
Android 11 (poziom 30 interfejsu API)
W przypadku aplikacji kierowanych na interfejs API na poziomie 30 lub wyższym obowiązują 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 w aplikacji korzystają z informacji o lokalizacji, aplikacja musi zadeklarować usługę z typem usługi
location
.
Android 9 (poziom 28 interfejsu API)
W Androidzie 9 wprowadzono uprawnienie
FOREGROUND_SERVICE
. Aplikacje działające na Androidzie 9, które korzystają z usług działających 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 wysyłania zapytania o FOREGROUND_SERVICE
uprawnienie, system zgłasza SecurityException
.