web-dev-qa-db-fra.com

Quelle est la différence entre le service, intentService dans Android?

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

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

23
vijaycaimi

1. Différence entre 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. service exécuté à l'intérieur du thread d'interface utilisateur, 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 fonctionne déjà dans un thread de travail et peut recevoir des demandes asynchrones. Vous n'avez donc pas besoin de le créer manuellement, ni de vous soucier de la synchronisation. Vous pouvez simplement l'étendre et remplacer la méthode:

onHandleIntent(Intent intent)

où vous pouvez gérer toutes les demandes entrantes.

En jetant un œil à la documentation , vous pouvez voir en détail ce que les IntentService font pour vous:

  • Crée un thread de travail par défaut qui exécute toutes les intentions livrées à onStartCommand() séparément du thread principal de votre application.
  • Crée une file d'attente de travail qui transmet une intention à la fois à votre implémentation onHandleIntent(), de sorte que vous n'avez jamais à vous soucier du multi-threading.
  • Arrête le service une fois toutes les demandes de démarrage traitées, vous n'avez donc jamais à appeler stopSelf().
  • Fournit l'implémentation par défaut de onBind() qui retourne 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().

Donc, 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 la 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 encapsule un thread de travail (effectuant des opérations en arrière-plan), facilitant l'interaction avec le thread d'interface utilisateur, sans gérer directement les threads ou les gestionnaires.

35
GVillani82

En bref, un service est une implémentation plus large permettant au développeur de configurer des opérations en arrière-plan, tandis qu'un IntentService est utile pour les opérations de "déclenchement et d'oubli", en prenant soin de la création et du nettoyage des threads en arrière-plan.

De la documentation:

Service Un service est un composant d'application représentant soit le désir d'une application d'effectuer une opération plus longue sans interagir avec l'utilisateur, soit de fournir des fonctionnalités à d'autres applications.

IntentService IntentService est une classe de base pour les services qui gère les demandes asynchrones (exprimées en intentions) à la demande. Les clients envoient des demandes via des appels startService (Intent); le service est démarré selon les besoins, gère chaque intention à son tour à l'aide d'un thread de travail et s'arrête lorsqu'il est à court de travail.

Service vs IntentService

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

0
saurabh