<service>

Syntaxe :
<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>
Contenu dans :
<application>
Peut contenir :
<intent-filter>
<meta-data>
Description :
Déclare un service (une sous-classe Service) comme l'un des composants de l'application. Contrairement aux activités, les services ne disposent pas d'interface utilisateur visuelle. Ils sont utilisés pour implémenter des opérations de longue durée en arrière-plan ou une API de communications enrichies pouvant être appelée par d'autres applications.

Tous les services doivent être représentés par des éléments <service> dans le fichier manifeste. Celles qui ne sont pas déclarées ne sont pas vues par le système et ne s'exécutent jamais.

Remarque : Sous Android 8.0 (niveau d'API 26) ou version ultérieure, le système limite les fonctionnalités de votre application lorsqu'elle s'exécute en arrière-plan. Pour en savoir plus, consultez les guides traitant des limites d'exécution en arrière-plan et des limites d'emplacement en arrière-plan.

Attributs :
android:description
Chaîne lisible décrivant le service. La description est définie comme une référence à une ressource de chaîne, de sorte qu'elle puisse être localisée comme les autres chaînes de l'interface utilisateur.
android:directBootAware

Indique si le service est compatible avec le démarrage direct, c'est-à-dire s'il peut s'exécuter avant que l'utilisateur déverrouille l'appareil.

Remarque : Pendant le démarrage direct, un service de votre application ne peut accéder qu'aux données stockées dans l'espace de stockage protégé par l'appareil.

La valeur par défaut est "false".

android:enabled
Indique si le service peut être instancié par le système. Cette valeur indique "true" s'il peut être instancié, et "false" dans le cas contraire. La valeur par défaut est "true".

L'élément <application> possède son propre attribut enabled qui s'applique à tous les composants d'application, y compris les services. Les attributs <application> et <service> doivent tous les deux être "true", comme ils le sont par défaut, pour que le service puisse être activé. Si l'une des valeurs est "false", le service est désactivé et ne peut pas être instancié.

android:exported
Indique si les composants d'autres applications peuvent appeler le service ou interagir avec lui. "true" si tel est le cas, et "false" dans le cas contraire. Lorsque la valeur est "false", seuls les composants de la même application ou des applications ayant le même ID utilisateur peuvent démarrer le service ou s'y associer.

La valeur par défaut varie selon que le service contient des filtres d'intent ou non. L'absence de filtres signifie qu'elle ne peut être appelée qu'en précisant son nom de classe exact. Cela implique que le service est destiné à un usage interne des applications uniquement, car les autres utilisateurs ne connaissent pas le nom de la classe. Dans ce cas, la valeur par défaut est "false". En revanche, la présence d'au moins un filtre implique que le service est destiné à un usage externe. La valeur par défaut est donc "true".

Cet attribut n'est pas le seul moyen de limiter l'exposition d'un service à d'autres applications. Vous pouvez également utiliser une autorisation pour limiter les entités externes pouvant interagir avec le service. Consultez l'attribut permission.

android:foregroundServiceType

Indique que le service est un service de premier plan répondant à un cas d'utilisation spécifique. Par exemple, un type de service de premier plan de "location" indique qu'une application dispose de la position actuelle de l'appareil, généralement pour continuer une action déclenchée par l'utilisateur en fonction de la position de l'appareil.

Vous pouvez attribuer plusieurs types de services de premier plan à un service particulier.

android:icon
Icône représentant le service. Cet attribut est défini comme référence à une ressource drawable contenant la définition de l'image. Si cette valeur n'est pas définie, l'icône spécifiée pour l'application dans son ensemble est utilisée à la place. Consultez l'attribut icon de l'élément <application>.

L'icône du service, définie ici ou par l'élément <application>, est également l'icône par défaut de tous les filtres d'intent du service. Consultez l'attribut icon de l'élément <intent-filter>.

android:isolatedProcess
Si la valeur est "true", ce service s'exécute selon un processus spécial qui est isolé du reste du système et ne dispose pas de ses propres autorisations. La seule communication avec lui s'effectue via l'API Service, avec la liaison et le démarrage.
android:label
Nom de service lisible pour les utilisateurs. Si cet attribut n'est pas défini, le libellé défini pour l'application dans son ensemble est utilisé à la place. Consultez l'attribut label de l'élément <application>.

Le libellé du service, défini ici ou par l'élément <application>, est également le libellé par défaut de tous les filtres d'intent du service. Consultez l'attribut label de l'élément <intent-filter>.

Le libellé est défini comme une référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes de l'interface utilisateur. Toutefois, lorsque vous développez l'application, vous pouvez également le définir comme une chaîne brute.

android:name
Nom de la sous-classe Service qui implémente le service. Il s'agit d'un nom de classe complet, tel que "com.example.project.RoomService". Cependant, pour faire court, si le premier caractère du nom est un point (".RoomService", par exemple), il est ajouté au nom du package spécifié dans l'élément <manifest>.

Une fois l'application publiée, ne modifiez pas ce nom, sauf si vous définissez android:exported="false".

Il n'y a pas de valeur par défaut. Vous devez renseigner le nom.

android:permission
Nom d'une autorisation dont une entité a besoin pour lancer le service ou s'y associer. Si un appelant de startService(), bindService() ou stopService() ne dispose pas de cette autorisation, la méthode ne fonctionne pas, et l'objet Intent n'est pas envoyé au service.

Si cet attribut n'est pas spécifié, l'autorisation définie par l'attribut permission de l'élément <application> s'applique au service. Si aucun attribut n'est défini, le service n'est pas protégé par une autorisation.

Pour en savoir plus sur les autorisations, consultez la section Autorisations dans la présentation du fichier manifeste d'application et les consignes de sécurité.

android:process
Nom du processus dans lequel le service est exécuté. Normalement, tous les composants d'une application s'exécutent dans le processus par défaut créé pour celle-ci. Il porte le même nom que le package de l'application. L'attribut process de l'élément <application> peut définir une valeur par défaut différente pour tous les composants. Toutefois, un composant peut remplacer la valeur par défaut par son propre attribut process, ce qui vous permet de répartir votre application sur plusieurs processus.

Si le nom assigné à cet attribut commence par le signe deux-points (:), un processus réservé à l'application est créé lorsque cela est nécessaire, et le service est exécuté dans ce processus.

Si le nom du processus commence par une lettre minuscule, le service sera exécuté dans un processus global du même nom, à condition qu'il soit autorisé à le faire. Cela permet aux composants de différentes applications de partager un processus, ce qui réduit l'utilisation des ressources.

android:stopWithTask
Si la valeur est "true", le système arrête automatiquement le service lorsque l'utilisateur supprime une tâche enracinée dans une activité appartenant à l'application. La valeur par défaut est "false".
Voir aussi :
<application>
<activity>
Première apparition :
Niveau d'API 1