Quelle est la différence entre le service, intentService sur android? [dupliquer]
cette question a déjà une réponse ici:
- Service vs IntentService 12 réponses
Quelle est la différence entre Service
et un IntentService
sur Android?
Quelle est la différence entre AsyncTask
et un IntentService
Android?
2 réponses
1. La différence entre le Service et IntentService
Service : c'est la classe de base pour les Services Android, que vous pouvez étendre pour créer n'importe quel service. Puisque le service fonctionne à l'intérieur du thread UI, il nécessite que vous créiez un thread de travail pour exécuter son travail.
IntentService : c'est une sous-classe de Service
, qui simplifie votre travail. Il travaille déjà dans un thread de travail, et peut recevoir des requêtes asynchrones. Donc, vous n'avez pas besoin de le créer manuellement, ou à vous soucier de la synchronisation. Vous pouvez simplement l'étendre et outrepasser la méthode:
onHandleIntent(Intent intent)
, où vous pouvez gérer toutes les demandes entrantes.
en regardant la documentation , vous pouvez voir en détail ce que le IntentService
faire pour vous:
- crée un thread de worker par défaut qui exécute tous les intents livrés à
onStartCommand()
séparément du thread principal de votre application. - crée une file d'attente de travail qui passe une intention à la fois à votre implémentation
onHandleIntent()
, de sorte que vous n'avez jamais à vous soucier du multi-threading. - arrête le service après que toutes les demandes de démarrage ont été traitées, de sorte que vous n'avez jamais à appeler
stopSelf()
. - fournit la mise en œuvre par défaut de
onBind()
qui renvoie null. - fournit une implémentation par défaut de
onStartCommand()
qui envoie l'intention à la file d'attente de travail, puis à votre implémentationonHandleIntent()
.
ainsi, si vous avez besoin de plus de contrôle, vous pouvez utiliser la classe Service
, mais souvent pour un service simple la meilleure solution est le IntentService
.
2. Différence entre AsyncTask et Service
ce sont deux concepts différents.
Service: peut être conçu comme une activité sans interface. Il convient aux opérations de longue durée.
AsyncTask: est une classe particulière qui enveloppe un thread actif (en effectuant des opérations en arrière-plan), facilitant l'interaction avec le Thread UI, sans Gérer les threads ou les gestionnaires directement.
en bref, un Service est une implémentation plus large pour le développeur pour mettre en place des opérations de fond, tandis qu'un IntentService est utile pour les opérations" fire and forget", en prenant soin de la création et du nettoyage du fil d'arrière-plan.
à Partir de la documentation:
Service un service est un élément d'application qui représente soit le désir d'une application d'effectuer une opération plus longue sans interagir avec l'utilisateur, soit la volonté de fournir des fonctionnalités pour d'autres applications.
IntentService IntentService est une classe de base pour les Services qui gèrent les requêtes asynchrones (exprimé en Intentions) sur demande. Les Clients envoient des demandes par l'intermédiaire d'appels de service(intention); le service est lancé au besoin, traite chaque intention à tour de rôle à l'aide d'un worker thread, et s'arrête lorsqu'il est à court de travail.
Qu'est-ce que le différence entre un IntentService et un Service?