- syntaxe :
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["camera" | "connectedDevice" | "dataSync" | "location" | "mediaPlayback" | "mediaProjection" | "microphone" | "phoneCall"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </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. Ceux qui ne sont pas déclarés ne seront pas vus par le système et ne seront jamais exécutés.Remarque : Sur Android version 8.0 (niveau d'API 26) ou ultérieure, le système restreint les possibilité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 décrivant le service aux utilisateurs. Le libellé doit être défini comme référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes dans l'interface utilisateur.
android:directBootAware
Indique si le service est compatible avec le démarrage direct, c'est-à-dire s'il peut être exécuté 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é ou non par le système : "
true
" s'il peut l'être 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
" (car ils 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 être instancié. android:exported
- Indique si les composants d'autres applications peuvent appeler le service ou interagir avec lui : "
true
" s'ils le peuvent 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 (voir l'attribut
permission
). android:foregroundServiceType
Indiquez 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 doit être 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 (voir l'attributicon
de l'élément<intent-filter>
). android:isolatedProcess
- Si ce paramètre est défini sur "Vrai", 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 (liaison et démarrage).
android:label
- Nom du service pouvant être affiché par 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 (voir l'attributlabel
de l'élément<intent-filter>
).Le libellé doit être 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 doit s'agir d'un nom de classe complet (par exemple, "com.example.project.RoomService
"). En revanche, par raccourci, si le premier caractère du nom est un point (par exemple, ".RoomService
"), il est ajouté au nom du package spécifié dans l'élément<manifest>
.Une fois votre application publiée, vous ne devez pas modifier ce nom (sauf si vous avez défini
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é doit disposer pour lancer le service ou s'y associer. Si un appelant de
,startService()
oubindService()
n'a pas reçu cette autorisation, cette méthode ne fonctionnera pas, et l'intent ne sera pas envoyé au service.stopService()
Si cet attribut n'est pas défini, 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 de l'introduction et un autre document, intitulé Sécurité et autorisations.
android:process
- Nom du processus dans lequel le service doit être 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 attribué à cet attribut commence par le caractère deux-points (:), un nouveau processus privé, créé pour l'application, est créé lorsque cela est nécessaire et que le service est exécuté au cours de 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.
- 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 2022/11/02 (UTC).
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Il n'y a pas l'information dont j'ai besoin"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Trop compliqué/Trop d'étapes"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Obsolète"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problème de traduction"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Mauvais exemple/Erreur de code"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Autre"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Facile à comprendre"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"J'ai pu résoudre mon problème"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Autre"
}]