- 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 attributenabled
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'attributicon
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'attributlabel
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()
oustopService()
ne dispose pas de cette autorisation, la méthode ne fonctionne pas, et l'objetIntent
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 attributprocess
, 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
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/18 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2024/12/18 (UTC)."],[],[]]