- sintassi:
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["camera" | "connectedDevice" | "dataSync" | "health" | "location" | "mediaPlayback" | "mediaProjection" | "microphone" | "phoneCall" | "remoteMessaging" | "shortService" | "specialUse" | "systemExempted"] android:icon="drawable resource" android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"] android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" android:stopWithTask=["true" | "false"]> ... </service>
- contenuto in:
<application>- può contenere:
<intent-filter><meta-data><property>- description:
- Dichiara un servizio, una sottoclasse
Service, come uno dei componenti dell'applicazione. A differenza delle attività, i servizi non hanno un'interfaccia utente visiva. Vengono utilizzati per implementare operazioni in background a lunga esecuzione o un'API di comunicazione avanzata che può essere chiamata da altre applicazioni.Tutti i servizi devono essere rappresentati da
<service>elementi in il file manifest. Quelli non dichiarati non vengono visualizzati dal sistema e non vengono mai eseguiti.Nota: su Android 8.0 (livello API 26) e versioni successive, il sistema limita le azioni che la tua app può eseguire in background. Per ulteriori informazioni, consulta le guide che trattano i limiti di esecuzione in background e i limiti di localizzazione in background.
- attributi:
android:description- Una stringa leggibile dall'utente che descrive il servizio. La descrizione viene impostata come a riferimento a una risorsa stringa, in modo che possa essere localizzata come altre stringhe nell'interfaccia utente.
android:directBootAwareIndica se il servizio è compatibile con l'avvio diretto, ovvero se può essere eseguito prima che l'utente sblocchi il dispositivo.
Nota: durante l'avvio diretto, un servizio nella tua applicazione può accedere solo ai dati archiviati nello spazio di archiviazione protetto dal dispositivo.
Il valore predefinito è
"false".android:enabled- Indica se il sistema può creare un'istanza del servizio. È
"true"se può farlo e"false"in caso contrario. Il valore predefinito è"true".L'elemento
<application>ha il proprioenabledattributo che si applica a tutti i componenti dell'applicazione, inclusi i servizi. Affinché il servizio sia abilitato, gli attributi<application>e<service>devono essere entrambi"true", come lo sono per impostazione predefinita. Se uno dei due è"false", il servizio è disabilitato e non può essere creato. android:exported- Indica se i componenti di altre applicazioni possono richiamare il servizio o interagire con esso. È
"true"se possono farlo e"false"in caso contrario. Quando il valore è"false", solo i componenti della stessa applicazione o delle applicazioni con lo stesso ID utente possono avviare il servizio o associarlo.Il valore predefinito dipende dal fatto che il servizio contenga filtri di intent. L'assenza di filtri significa che può essere richiamato solo specificando il nome della classe esatto. Ciò implica che il servizio è destinato solo all'uso interno dell'applicazione, poiché altri non conoscono il nome della classe. In questo caso, il valore predefinito è
"false". D'altra parte, la presenza di almeno un filtro implica che il servizio è destinato all'uso esterno, quindi il valore predefinito è"true".Questo attributo non è l'unico modo per limitare l'esposizione di un servizio ad altre applicazioni. Puoi anche utilizzare un'autorizzazione per limitare le entità esterne che possono interagire con il servizio. Consulta l'attributo
permission. android:foregroundServiceTypeSpecifica che il servizio è un servizio in primo piano che soddisfa un caso d'uso specifico. Ad esempio, un tipo di servizio in primo piano
"location"indica che un'app sta recuperando la posizione attuale del dispositivo, in genere per continuare un'azione avviata dall'utente correlata alla posizione del dispositivo.Puoi assegnare più tipi di servizi in primo piano a un determinato servizio.
android:iconUn'icona che rappresenta il servizio. Questo attributo viene impostato come riferimento a una risorsa disegnabile contenente la definizione dell'immagine. Se non è impostato, viene utilizzata l'icona specificata per l'applicazione nel suo complesso. Consulta l'attributo
icondell'elemento<application>.L'icona del servizio, sia che sia impostata qui sia dall'elemento
<application>, è anche l'icona predefinita per tutti i filtri di intent del servizio. Consulta l'attributoicondell'elemento<intent-filter>.android:intentMatchingFlags-
Utilizza questo attributo per ottimizzare il modo in cui il sistema associa gli intent in entrata ai componenti dell'app componenti. Per impostazione predefinita, non vengono applicate regole di corrispondenza speciali.
Il valore impostato su un tag
<service>sostituisce il valore impostato sul tag<application>.Il valore deve essere uno o più dei seguenti flag, separati da "
|":Flag Descrizione noneDisabilita tutte le regole di corrispondenza speciali per gli intent in entrata. Quando specificando più flag, i valori in conflitto vengono risolti dando la precedenza al flag none.enforceIntentFilterApplica una corrispondenza più rigorosa per gli intent in entrata:
- Gli intent espliciti devono corrispondere al filtro di intent del componente di destinazione.
- Gli intent senza un'azione non corrispondono a nessun filtro di intent.
allowNullActionRilassa le regole di corrispondenza per consentire la corrispondenza degli intent senza un'azione. Questo flag viene utilizzato insieme a
enforceIntentFilterper ottenere il seguente comportamento:- Gli intent espliciti devono corrispondere al filtro di intent del componente di destinazione.
- Gli intent senza un'azione possono corrispondere a qualsiasi filtro di intent.
Per ulteriori informazioni, consulta la sezione Intent più sicuri in Modifiche al comportamento di Android 16 (livello API 36).
android:isolatedProcess- Se impostato su
"true", questo servizio viene eseguito in un processo speciale isolato dal resto del sistema e non ha autorizzazioni proprie. L'unica comunicazione con il servizio avviene tramite l'API Service, con associazione e avvio. android:label- Un nome leggibile dall'utente per il servizio.
Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo complesso. Consulta l'attributo
labeldell'elemento<application>.L'etichetta del servizio, sia che sia impostata qui sia dall'elemento
<application>è anche l' etichetta predefinita per tutti i filtri di intent del servizio. Consulta l'attributolabeldell'elemento<intent-filter>.L'etichetta viene impostata come riferimento a una risorsa stringa, in modo che possa essere localizzata come altre stringhe nell'interfaccia utente. Tuttavia, per comodità durante lo sviluppo dell'applicazione, può essere impostata anche come stringa non elaborata.
android:name- Il nome della sottoclasse
Serviceche implementa il servizio. Si tratta di un nome di classe completo, ad esempio"com.example.project.RoomService". Tuttavia, come abbreviazione, se il primo carattere del nome è un punto, ad esempio".RoomService", viene aggiunto al nome del pacchetto specificato nell'<manifest>elemento.Una volta pubblicata l'applicazione, non modificare questo nome, a meno che non imposti
android:exported="false".Non esiste un valore predefinito. Il nome deve essere specificato.
android:permission- Il nome di un'autorizzazione di cui un'entità ha bisogno per avviare il servizio o associarlo. Se a un chiamante di
startService(),bindService()ostopService()non viene concessa questa autorizzazione, il metodo non funziona e l'oggettoIntentnon viene recapitato al servizio.Se questo attributo non è impostato, al servizio si applica l'autorizzazione impostata dall'attributo
permissiondell'elemento<application>. Se nessuno dei due attributi è impostato, il servizio non è protetto da un'autorizzazione.Per ulteriori informazioni sulle autorizzazioni, consulta la sezione Autorizzazioni nella panoramica del manifest dell'app e le Linee guida per la sicurezza.
android:process- Il nome del processo in cui viene eseguito il servizio. In genere, tutti i componenti di un'applicazione vengono eseguiti nel processo predefinito creato per l'applicazione. Ha lo stesso nome del pacchetto dell'applicazione. L'
<application>attributo dell'elementoprocesspuò impostare un valore predefinito diverso per tutti i componenti. Tuttavia, un componente può sostituire il valore predefinito con il proprio attributoprocess, consentendoti di distribuire l'applicazione su più processi.Se il nome assegnato a questo attributo inizia con i due punti (
:), viene creato un nuovo processo, privato per l'applicazione, quando è necessario e il servizio viene eseguito in quel processo.Se il nome del processo inizia con un carattere minuscolo, il servizio viene eseguito in un processo globale con quel nome, a condizione che abbia l'autorizzazione per farlo. In questo modo, i componenti di applicazioni diverse possono condividere un processo, riducendo l'utilizzo delle risorse.
android:stopWithTask- Se impostato su
"true", il sistema arresta automaticamente il servizio quando l'utente rimuove un'attività basata su un'attività di proprietà dell'app. Il valore predefinito è"false".
- vedi anche:
<application><activity>- introdotta in:
- Livello API 1
<servizio>
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2026-07-03 UTC.
[null,null,["Ultimo aggiornamento 2026-07-03 UTC."],[],[]]