Quelle est la différence entre le service, intentService sur android? [dupliquer]

cette question a déjà une réponse ici:

Quelle est la différence entre Service et un IntentService sur Android?

Quelle est la différence entre AsyncTask et un IntentService Android?

22
demandé sur GreenRobo 2015-07-16 13:18:04

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émentation onHandleIntent() .

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.

32
répondu GVillani82 2017-06-24 09:38:55

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.

Service vs IntentService

Qu'est-ce que le différence entre un IntentService et un Service?

0
répondu saurabh 2017-05-23 12:03:05