- syntax:
<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:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" android:stopWithTask=["true" | "false"]> ... </service>
- contenuti in:
<application>
- può contenere:
<intent-filter>
<meta-data>
- description:
- Dichiara un servizio, una sottoclasse
Service
, come uno tra i componenti dell'applicazione. A differenza delle attività, i servizi non dispongono di un'interfaccia utente visiva. Vengono utilizzati per implementare operazioni in background di lunga durata o un'API di comunicazione avanzata che può essere chiamata da altre applicazioni.Tutti i servizi devono essere rappresentati da elementi
<service>
nel file manifest. Gli annunci non dichiarati non vengono visti dal sistema e non vengono mai pubblicati.Nota: su Android 8.0 (livello API 26) e versioni successive, il sistema limita le operazioni che la tua app può svolgere durante l'esecuzione in background. Per maggiori informazioni, consulta le guide sui limiti di esecuzione in background e sui limiti di accesso alla posizione in background.
- attributes:
android:description
- Una stringa leggibile che descrive il servizio. La descrizione viene impostata come riferimento a una risorsa stringa, in modo che possa essere localizzata come le altre stringhe nell'interfaccia utente.
android:directBootAware
Indica se il servizio è consapevole del boot diretto, ovvero se può essere eseguito prima che l'utente sblocchi il dispositivo.
Nota: durante il boot diretto, un servizio nella tua applicazione può accedere solo ai dati archiviati nello spazio di archiviazione protetto del dispositivo.
Il valore predefinito è
"false"
.android:enabled
- Indica se il servizio può essere istanziato dal sistema. È
"true"
se può essere e"false"
in caso contrario. Il valore predefinito è"true"
.L'elemento
<application>
ha il proprio attributoenabled
che si applica a tutti i componenti dell'applicazione, inclusi i servizi. Affinché il servizio venga attivato, gli attributi<application>
e<service>
devono essere entrambi"true"
, come accade per impostazione predefinita. Se uno dei due è"false"
, il servizio è disattivato e non può essere istanziato. android:exported
- Se i componenti di altre applicazioni possono invocare
o interagire con il servizio. È
"true"
se può e"false"
in caso contrario. Quando il valore è"false"
, solo i componenti della stessa applicazione o delle stesse applicazioni con lo stesso ID utente possono avviare il servizio o associarsi a esso.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 esatto della classe. Ciò implica che il servizio è destinato solo all'uso interno all'applicazione, poiché gli altri non conoscono il nome della classe. Pertanto, in questo caso il valore predefinito è
"false"
. D'altra parte, la presenza di almeno un filtro implica che il servizio è destinato all'uso esterno, pertanto 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:foregroundServiceType
Specifica che il servizio è un servizio in primo piano che soddisfa un particolar caso d'uso. Ad esempio, un tipo di servizio in primo piano
"location"
indica che un'app sta ottenendo la posizione corrente del dispositivo, in genere per continuare un'azione avviata dall'utente relativa alla posizione del dispositivo.Puoi assegnare più tipi di servizi in primo piano a un determinato servizio.
android:icon
- Un'icona che rappresenta il servizio. Questo attributo viene impostato come riferimento a una risorsa drawable contenente la definizione dell'immagine.
Se non è impostato, viene utilizzata l'icona specificata per l'applicazione
nel suo complesso. Consulta l'attributo
icon
dell'elemento<application>
.L'icona del servizio, impostata qui o dall'elemento
<application>
, è anche l'icona predefinita per tutti i filtri di intent del servizio. Consulta l'attributoicon
dell'elemento<intent-filter>
. 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 avviene tramite l'API Service, con il binding e l'avvio. android:label
- Un nome leggibile per l'utente per il servizio.
Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo complesso. Consulta l'attributo
label
dell'elemento<application>
.L'etichetta del servizio, impostata qui o dall'elemento
<application>
, è anche l'etichetta predefinita per tutti i filtri di intent del servizio. Consulta l'attributolabel
dell'elemento<intent-filter>
.L'etichetta viene impostata come riferimento a una risorsa stringa, in modo che possa essere localizzata come le altre stringhe nell'interfaccia utente. Tuttavia, per praticità durante lo sviluppo dell'applicazione, puoi impostarlo anche come stringa non elaborata.
android:name
- Il nome della sottoclasse
Service
che 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'elemento<manifest>
.Una volta pubblicata l'applicazione, non modificare questo nome, a meno che non imposti
android:exported="false"
.Non è presente un valore predefinito. È necessario specificare il nome.
android:permission
- Il nome di un'autorizzazione di cui un'entità ha bisogno per avviare il servizio o associarsi a esso. Se a un chiamante di
startService()
,bindService()
ostopService()
non viene concessa questa autorizzazione, il metodo non funziona e l'oggettoIntent
non viene inviato al servizio.Se questo attributo non è impostato, al servizio viene applicata l'autorizzazione impostata dall'attributo
permission
dell'elemento<application>
. Se nessuno degli attributi è impostato, il servizio non è protetto da un'autorizzazione.Per ulteriori informazioni sulle autorizzazioni, consulta la sezione Autorizzazioni nella panoramica del file manifest dell'app e le linee guida sulla sicurezza.
android:process
- Il nome del processo in cui viene eseguito il servizio. Normalmente, tutti i componenti di un'applicazione vengono eseguiti nel processo predefinito creato per l'applicazione. Ha lo stesso nome del pacchetto dell'applicazione. L'attributo
process
dell'elemento<application>
può 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 due punti (
:
), viene creata una nuova procedura, privata per l'applicazione, quando è necessaria e il servizio viene eseguito in quella procedura.Se il nome del processo inizia con un carattere minuscolo, il servizio viene eseguito in un processo globale con lo stesso nome, a condizione che disponga dell'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 interrompe 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>
- introdotto in:
- Livello API 1
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 2024-12-18 UTC.
[null,null,["Ultimo aggiornamento 2024-12-18 UTC."],[],[]]