Android: Créer un service qui s'exécute lorsque l'application s'arrête
Comment voulez-vous créer un Service qui maintient en cours d'exécution lorsque votre application est arrêtée? Je suis de la création du service dans un processus distinct dans le fichier manifeste:
<service
android:name="com.example.myservice"
android:process=":remoteservice" />
Je suis également de retour START_STICKY dans le Service de onStartCommand:
@Override
public in onStartCommand(Intent intent, int flags, int startId){
return Service.START_STICKY;
}
J'ai le même problème. Avez-vous trouvé une solution?
OriginalL'auteur zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz | 2012-03-16
Vous devez vous connecter pour publier un commentaire.
Je ne voudrais pas utiliser le android:processus d'attribut - ce qui fonctionne votre service dans un processus séparé et rend difficile de faire des choses, comme partager des préférences. Vous n'aurez pas à vous inquiéter au sujet de votre service de mourir lorsque votre application meurt, le service va continuer (c'est le point de service). Vous aussi vous ne voulez pas d'une liaison de service parce que cela va démarrer et meurent lorsque les liaisons faire. Cela étant dit:
Vous pouvez définir votre propre action a l'intention de lancer le service (ne peut pas être lancé par le système doit être une activité). J'aime "activé" pour vrai, alors le système peut instancier mon service, et "exporté" afin que d'autres applications peuvent envoyer des intentions et d'interagir avec mon service. Vous pouvez trouver plus d'informations sur ce ici.
Vous pouvez également faire une longue course service qui utilise les liaisons, si vous faites cela, ajoutez simplement de l'intention et de la pour le liant tel que:
Maintenant pour démarrer le service de votre activité:
Maintenant pour le service:
Maintenant, votre service doit s'exécuter. Afin d'aider avec la longévité il y a une astuce. Le faire fonctionner comme un avant-plan de service (vous faites cela dans le service) - ce qui fera de vous créer une icône de notification qui colle dans la barre d'état. Aussi garder votre TAS de lumière pour faire de vous le demande moins de chances d'être tué par Android.
Également le service est tué lorsque vous tuez le DVM - donc si vous allez dans Paramètres->Applications et l'arrêt de l'application, vous sont en train de tuer la DVM et tuant ainsi la service de. Juste parce que vous voyez l'exécution de votre application dans les paramètres n'est pas une Activité est en cours d'exécution. L'activité et le service ont différents cycles de vie mais peuvent partager un DVM. Il suffit de garder à l'esprit que vous n'avez pas de tuer votre activité si pas nécessaire, il suffit de laisser Android poignée.
Espère que cette aide.
Ensuite, le réglage d'activation et de commencer le service avec une intention, comme indiqué ci-dessus devrait résoudre ce problème. Il fonctionne parfaitement pour moi - à l'aide des conseils je l'ai montré à mes services rester en vie pendant des jours...
J'ai même tuer mon activité après le démarrage du service à l'aide de la onFinish() la méthode. Donc, je sais que cela fonctionne.
J'ai fait toutes ces choses, et mon service est toujours tué lors de ma demande est tué.
Comment vous demande d'être tué? Que faites-vous pour le tuer?
OriginalL'auteur jjNford