La documentazione del servizio in primo piano descrive il comportamento attuale dei servizi in primo piano di Android. La documentazione fornisce indicazioni sulle best practice per la maggior parte delle app, indipendentemente dal fatto che abbiano come target la versione più recente di Android.
Questa pagina descrive alcune delle modifiche importanti più recenti ai servizi in primo piano e le implicazioni per le app che non hanno come target la versione più recente della piattaforma Android. In molti casi, le best practice che erano facoltative per le app che hanno come target livelli API inferiori diventano obbligatorie per le app che hanno come target livelli API superiori.
Android 16 (livello API 36)
Le seguenti modifiche si applicano alle app che vengono eseguite su Android 16 o versioni successive, indipendentemente dal livello API target:
I job in background avviati da un servizio in primo piano ora devono rispettare le rispettive quote di runtime. Sono inclusi i job pianificati direttamente con
JobScheduler
, nonché i job creati da altre librerie come WorkManager oDownloadManager
.Per trasferire i dati in risposta a un'azione dell'utente, valuta la possibilità di utilizzare un job di trasferimento di dati avviato dall'utente. Questi job sono esenti dalle quote di job ordinarie.
Android 15 (livello API 35)
I seguenti requisiti si applicano alle app che hanno come target il livello API 35 o versioni successive:
- Sono state introdotte nuove limitazioni alla durata di esecuzione di un servizio in primo piano
dataSync
. Queste limitazioni sono descritte in Comportamento del timeout del servizio in primo piano. Limitazioni simili si applicano al tipo di servizio in primo pianomediaProcessing
(novità di Android 15). - I servizi in primo piano
BOOT_COMPLETED
non sono più autorizzati ad avviare determinati servizi in primo piano. - Le app che dispongono dell'autorizzazione
SYSTEM_ALERT_WINDOW
possono avviare servizi in primo piano dallo sfondo solo se hanno attualmente una finestra di overlay visibile (o se soddisfano una delle altre esenzioni dalle limitazioni di avvio in background). In precedenza, l'esenzione per queste app era più ampia.
Android 14 (livello API 34)
I seguenti requisiti si applicano alle app che hanno come target il livello API 34 o versioni successive:
- Devi dichiarare tutti i servizi in primo piano con i relativi tipi di servizio.
- Le app devono richiedere il tipo di autorizzazione appropriato per il tipo di lavoro che il
servizio in primo piano svolgerà. Ogni tipo di servizio in primo piano
ha un tipo di autorizzazione corrispondente. Ad esempio, se un'app avvia un
servizio in primo piano che utilizza la fotocamera, devi richiedere sia le autorizzazioni
FOREGROUND_SERVICE
cheFOREGROUND_SERVICE_CAMERA
. Se un'app ha come target il livello API 34 o versioni successive e non richiede l'autorizzazione specifica appropriata, il sistema genera un erroreSecurityException
.
Android 12 (livello API 31)
I seguenti requisiti si applicano alle app che hanno come target il livello API 31 o versioni successive:
- Le app non sono autorizzate ad avviare servizi in primo piano mentre sono in background, con alcune eccezioni specifiche. Per ulteriori informazioni e per scoprire le eccezioni a questa regola, consulta Limitazioni all'avvio di un servizio in primo piano dallo sfondo.
Android 11 (livello API 30)
I seguenti requisiti si applicano alle app che hanno come target il livello API 30 o versioni successive:
- Se i servizi in primo piano di un'app utilizzano la fotocamera o il microfono, l'app deve
dichiarare il servizio con il tipo di servizio
camera
omicrophone
, rispettivamente.
Android 10 (livello API 29)
I seguenti requisiti si applicano alle app che hanno come target il livello API 29 o versioni successive:
- Se i servizi in primo piano di un'app utilizzano informazioni sulla posizione, l'app deve
dichiarare il servizio con il tipo di servizio
location
.
Android 9 (livello API 28)
Android 9 introduce l'autorizzazione
FOREGROUND_SERVICE
. Le app in esecuzione su
Android 9 che utilizzano servizi in primo piano devono disporre di questa autorizzazione.
Se un'app che ha come target il livello API 28 o versioni successive tenta
di creare un servizio in primo piano senza richiedere l'autorizzazione FOREGROUND_SERVICE
, il sistema genera un errore SecurityException
.