http://developer.android.com/guide/components/services.htmlPour créer un service, vous devez créer une sous-classe de service (ou un de ses sous-classes existantes). Dans votre application, vous devez remplacer certaines méthodes de rappel qui gèrent les aspects clés du cycle de vie du service et de fournir un mécanisme permettant de lier des composants au service, le cas échéant. Les méthodes de rappel plus importantes que vous devez redéfinir sont:
onStartCommand ()
Le système appelle cette méthode quand un autre composant, comme une activité, les demandes que le service soit démarré, en appelant startService () . Une fois cette méthode s'exécute, le service est démarré et peut fonctionner en tâche de fond indéfiniment. Si vous implémentez ce fait, il est de votre responsabilité d'arrêter le service lorsque son travail est fait, en appelant stopSelf () ou stopService () . (Si vous ne souhaitez offrir liaison, vous n'avez pas besoin de mettre en œuvre cette méthode.)
onBind ()
Le système appelle cette méthode quand un autre composant veut se lier avec le service (par exemple pour effectuer RPC), en appelant bindService () . Dans votre implémentation de cette méthode, vous devez fournir une interface que les clients utilisent pour communiquer avec le service, en renvoyant un IBinder . Vous devez toujours mettre en œuvre cette méthode, mais si vous ne voulez pas permettre la liaison, alors vous devriez retourner null.
oncreate ()
Le système appelle cette méthode lorsque le service est créé, pour effectuer les procédures de configuration ponctuels (avant d'appeler soit onStartCommand () ou onBind () ). Si le service est déjà en cours d'exécution, cette méthode n'est pas appelée.
OnDestroy ()
Le système appelle cette méthode lorsque le service n'est plus utilisé et est détruit. Votre service doit mettre en œuvre ce à nettoyer toutes les ressources tels que les fils, les auditeurs inscrits, récepteurs, etc Ceci est le dernier appel le service reçoit.
Si un composant démarre le service en appelant startService () (qui se traduit par un appel à onStartCommand () ), le service reste actif jusqu'à ce qu'il s'arrête avec lui-même stopSelf () ou un autre composant s'arrête en appelant stopService () .
Si un composant appelle bindService () pour créer le service (et onStartCommand () est non appelé), le service ne fonctionne que tant que le composant est lié à elle. Une fois que le service n'est pas lié à tous les clients, le système détruit.
Le système Android forcera-arrêter un service uniquement lorsque la mémoire est faible et il doit récupérer les ressources du système pour l'activité qui a le focus de l'utilisateur. Si le service est lié à une activité qui a le focus de l'utilisateur, alors il est moins susceptible d'être tué, et si le service est déclaré à courir au premier plan (voir plus loin), alors il ne sera presque jamais être tué. Sinon, si le service a été démarré et est de longue durée, alors le système va réduire sa position dans la liste des tâches de fond au fil du temps et le service va devenir très sensibles à la mort, si votre service est démarré, vous devez le concevoir à gérer redémarre correctement par le système. Si le système tue votre service, il redémarre dès que les ressources seront disponibles à nouveau (mais cela dépend aussi de la valeur que vous revenez de onStartCommand () , comme on le verra plus tard). Pour plus d'informations sur le moment où le système peut détruire un service, consultez les processus et les Threading documents.
Dans les sections suivantes, vous verrez comment vous pouvez créer chaque type de service et la façon de l'utiliser à partir d'autres composants de l'application.
Déclarer un service dans le manifeste
Comme les activités (et d'autres composants), vous devez déclarer tous les services dans le fichier manifeste de l'application.
Pour déclarer votre service, ajouter un <service> élément comme un enfant de la <application> élément. Par exemple:
<Manifeste ... >
...
<demande ... >
<Service android: nom = ". ExampleService" />
...
</ application>
</ manifest>
Il ya d'autres attributs que vous pouvez inclure dans le <service> élément pour définir des propriétés telles que les autorisations requises pour démarrer le service et le processus dans lequel le service doit s'exécuter. Le android: nom attribut est-il seulement nécessaire spécifie le nom de la classe du service. Une fois que vous publiez votre application, vous ne devez pas modifier ce nom, parce que si vous le faites, vous risquez de casser certaines fonctionnalités où intentions explicites sont utilisées pour référencer votre service (lire l'article du blog, les choses qui ne peuvent pas changer ).
Voir le <service> référence d'élément pour plus d'informations sur la déclaration de votre service dans le manifeste.
Tout comme une activité, un service peut définir des filtres qui permettent l'intention d'autres composants pour appeler le service à l'aide intentions implicites. En déclarant filtres d'intention, des composants à partir de n'importe quelle application installée sur l'appareil de l'utilisateur peut potentiellement lancer votre service si votre service déclare un filtre d'intention qui correspond à l'intention d'une autre application passe à startService () .
Si vous prévoyez d'utiliser votre service uniquement localement (les autres applications ne l'utilisent pas), alors vous n'avez pas besoin de (et ne devriez pas) fournir des filtres d'intention. Sans filtres d'intention, vous devez démarrer le service en utilisant une intention qui nomme explicitement la classe de service. Plus d'informations sur le démarrage d'une fonction est décrite ci-dessous.
De plus, vous pouvez vous assurer que votre service est privé de vos applications que si vous incluez l' android: exportés attribut et définissez à "false" . Cette technique est efficace même si votre service fournit des filtres d'intention.
Pour plus d'informations sur la création de filtres d'intention pour votre service, consultez les intentions et les filtres intention documents
edit:
Pour supprimer le service de premier plan, appeler stopForeground () .
— Modifié le 9 sept. 2013 à 08:59:25