139 votes

Android: AsyncTask vs Service

Pourquoi dois-je lire dans la réponse à la plupart des questions ici beaucoup sur l' AsyncTask et Chargeurs mais rien sur les Services? Sont Services ne sait pas très bien ou sont-ils obsolètes ou ont certains attributs ou quelque chose? Quelles sont les différences?

(En passant, je sais qu'il y a d'autres discussions à ce sujet, mais aucun n'états des différences claires que d'aider un développeur pour facilement décider s'il est préférable d'utiliser l'un ou l'autre pour un problème réel.)

275voto

Computerish Points 5219

Dans certains cas, il est possible de réaliser la même tâche avec un AsyncTask ou Service mais généralement, est mieux adapté à une tâche que l'autre.

AsyncTasks sont conçus pour une fois-off de temps des tâches qui ne peut pas être exécuté de la thread de l'INTERFACE utilisateur. Un exemple courant est l'extraction/traitement de données lorsqu'un bouton est enfoncé.

Services sont conçus pour être continuellement en cours d'exécution en arrière-plan. Dans l'exemple ci-dessus de l'extraction de données lorsqu'un bouton est enfoncé, vous pouvez démarrer un service, de le laisser récupérer les données, puis de l'arrêter, mais c'est inefficace. Il est beaucoup plus rapide d'utiliser un AsyncTask qui sera exécuté une fois, renvoyer les données, et être fait.

Si vous avez besoin d'être continuellement faire quelque chose dans le fond, même si, Service est votre meilleur pari. Des exemples de jouer de la musique, continuellement vérifier les nouvelles données, etc.

Aussi, comme Il l'a déjà dit, les services ne sont pas nécessairement hors de la thread de l'INTERFACE utilisateur.

Pour la plupart, Services sont pour lorsque vous souhaitez exécuter du code, même lorsque votre application est Activity n'est pas ouvert. AsyncTasks sont conçus pour rendre l'exécution de code du thread d'INTERFACE utilisateur incroyablement simple.

57voto

Sherif elKhatib Points 23987

Les Services sont complètement différents: les Services ne sont pas les threads!

Votre Activité se lie à un service, et le service contient quelques fonctions que lorsqu'il est appelé, bloque le thread appelant. Votre service peut être utilisé pour modifier la température de Celsius en Degrés. Toute activité qui se lie pouvez obtenir ce service.


Toutefois AsyncTask est un Thread qui effectue des travaux dans le fond et en même temps il a la capacité de faire rapport des résultats à la thread appelant.

Juste une pensée: Un service peut avoir un AsyncTask objet!

6voto

logcat Points 1722

Le service est un démon, AsynkTask est le fil de fond

6voto

user3445599 Points 230

Vous avez probablement déjà lu la documentation description sur eux, je ne vais pas les répéter, à la place je vais essayer de répondre avec mes propres mots, j'espère qu'ils vont vous aider.

Un Service est une Activité, mais n'a pas d'interface. Probablement, si vous souhaitez récupérer la météo par exemple vous n'aurez pas à créer une nouvelle activité, pour elle, pour cela, vous allez utiliser un Service. Un Thread est un Thread, probablement, vous savez déjà de l'autre partie. Vous devez savoir que vous ne pouvez pas mettre à jour l'INTERFACE utilisateur à partir d'un Thread. Vous devez utiliser un Gestionnaire pour cela, mais lisez la suite. Une AsyncTask est un être intelligent Thread qui est conseillé pour être utilisé. Intelligent comme il peut l'aider avec ses méthodes, et il y a deux méthodes qui s'exécutent sur le thread de l'INTERFACE utilisateur, ce qui est bon pour mettre à jour les composants de l'INTERFACE utilisateur. Je suis, en utilisant les Services, AsyncTasks fréquemment. Fil moins, ou pas du tout, je peux pratiquement tout faire avec AsyncTask.

3voto

samo Points 110

Les tâches asynchrones seront annulées si l'orientation de l'appareil change. Cela devrait être pris en compte pour les processus d'arrière-plan plus longs, tels que le téléchargement de données depuis Internet, par exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X