2011-09-29 4 views
0

De here,Comprendre le service Android

Il a dit service n'est pas un processus séparé et il est pas un fil. Mais comment peut-il "Une facilité pour l'application de dire au système ce qu'il veut faire en arrière-plan"?

Comment faire quelque chose en arrière-plan sans être un processus ou un fil de discussion?

Répondre

1

Un service est plus ou moins un objet Android potentiellement de longue durée. En d'autres termes, Android va instancier un objet de service pour vous et le garder en vie jusqu'à ce que vous disiez à Android que vous en avez fini avec lui.

Il est courant que les services démarrent un thread d'arrière-plan pour effectuer certaines tâches. Une fois qu'ils ont terminé leur tâche, ils disent à Android que le service peut être arrêté. Une fois votre service arrêté, Android appelle onDestroy. Maintenant que Android sait que votre service est terminé, si le reste de votre application n'est pas en cours d'exécution, Android peut décider de détruire le processus utilisé par votre application pour récupérer de la mémoire. Cela ne fonctionnait pas auparavant puisque votre service était en cours d'exécution.

penser de cette façon (note, certaines choses sont laissés de côté pour ne pas vous submerger):

  1. Android crée une instance de votre service
  2. appelle Android onStart sur votre service et vous commencez une fil
  3. exécution retourne à Android et il voit votre service est toujours en cours il ne remet pas OnDestroy
  4. Quelque temps passe où est fait
  5. Vous appelez votre travail de fond s Topservice sur votre service ou votre service est non liée
  6. Android voit maintenant l'objet de service peut être détruit et recueilli
  7. appelle Android OnDestroy sur votre service et supprime de sa propre liste interne des services en cours d'exécution
0

Comment faire quelque chose en arrière-plan sans être un processus ou un thread?

Simple, n'est pas un processus mais fait partie de certains processus. Cela signifie qu'il peut très bien y avoir un seul processus qui gère tous les services dans le système, similaire à la façon dont les widgets sont gérés lors de l'activité à domicile.