2016-03-04 4 views
0

J'ai un service d'arrière-plan qui fonctionne en arrière-plan pour suivre les événements d'activation et de désactivation de l'écran. son commencé comme ci-dessous:comment garder mon service d'arrière-plan actif lorsque le système Android tue mon application?

Intent intentService = new Intent(context, UnlockdService.class); 
context.startService(intentService); 

Et il est de retour Service.START_REDELIVER_INTENT dans la méthode onStartCommand. Mais quand le système Android tue l'application, ce fil meurt aussi.

Comment puis-je l'empêcher?

+0

Il est impossible de garantir qu'un service ne sera pas tué. Le mieux que vous puissiez faire est de vous assurer que vous avez redémarré lorsque cela est possible. –

Répondre

0

La solution était si simple: Renvoyer START_STICKY de onStartCommand() fait le travail.

0

Je pense que c'est une meilleure solution d'avoir un BroadcastReceiver au lieu d'un service. Dans votre onReceive, vous pourriez alors commencer votre service pour faire son travail, et ensuite le service pourrait s'auto-terminer - peut-être que vous pourriez utiliser un IntentService si votre travail est en un seul coup.

Si vous voulez toujours un service, vous pouvez le rendre moins susceptible d'être tué en ayant une notification permanente dans la barre de notification, mais cela peut être mauvais du point de vue de l'utilisateur. Je recommande fortement de suivre la route du récepteur de diffusion.

+0

Un tel problème stupide .. la solution était si simple ... START_STICKY a fait le travail: D –