web-dev-qa-db-fra.com

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

Pouvez-vous m'aider à comprendre quelle est la différence entre un IntentService et un Service?

123
michael

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

De la docs:

Service Un service est un composant d'application qui représente le désir d'une application d'exécuter une opération plus longue sans interagir avec l'utilisateur ou de fournir une fonctionnalité pour d'autres applications. utiliser.

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

Reportez-vous à cette documentation - http://developer.Android.com/reference/Android/app/IntentService.html

116
Phix

Service est une classe de base d'implémentation de service. Service s'exécute sur le thread principal de l'application, ce qui peut réduire les performances de l'application. Ainsi, IntentService, qui est une sous-classe directe de Service, est disponible pour faciliter les choses.

Le IntentService est utilisé pour effectuer une tâche donnée en arrière-plan. Une fois cela fait, l'instance de IntentService se termine automatiquement. Des exemples d'utilisation seraient de télécharger une certaine ressource à partir d'Internet.

Différences

  1. La classe Service utilise le thread principal de l'application, tandis que IntentService crée un thread de travail et utilise ce thread pour exécuter le service.
  2. IntentService crée une file d'attente qui transmet une intention à la fois à onHandleIntent(). Ainsi, implémenter un multi-thread devrait être fait en étendant directement la classe Service. Service la classe a besoin d'un arrêt manuel en utilisant stopSelf(). Pendant ce temps, IntentService s’arrête automatiquement à la fin de l’exécution.
  3. IntentService implémente onBind() qui renvoie null. Cela signifie que le IntentService ne peut pas être lié par défaut.
  4. IntentService implémente onStartCommand() qui envoie l'intention à la file d'attente et à onHandleIntent().

En résumé, il n’ya que deux choses à faire pour utiliser IntentService. Tout d'abord, pour implémenter le constructeur. Et deuxièmement, implémenter onHandleIntent(). Pour les autres méthodes de rappel, le super doit être appelé pour pouvoir être suivi correctement.

107
Jashan PJ

service: Il fonctionne en arrière-plan sur votre système. Par exemple,

  1. Si vous êtes allé dans un hôtel et que vous donnez votre commande de soupe à un serveur
  2. Le serveur reçoit votre commande et l'envoie au chef
  3. Vous ne savez pas comment la soupe est préparée dans la cuisine et quels processus sont nécessaires pour la préparer.
  4. Une fois votre commande prête, le serveur vous apporte la soupe.

processus de base: chef faisant la soupe

IntentService: - c’est un service consécutif .. (i.e) lorsque vous commandez plusieurs aliments à la fois sur le serveur mais que le serveur les distribue un par un et non pas tous en même temps.

65
DineshKumar

Voir Tejas Lagvankar post à ce sujet. Vous trouverez ci-dessous les principales différences entre Service et IntentService et d’autres composants.

enter image description here

45
Pranav

Service s'exécute en réalité dans le même fil de votre application; lorsque vous étendez le service, vous devez générer manuellement de nouveaux threads pour exécuter des opérations de blocage de l'UC.

contre

IntentService est une sous-classe de Service qui génère un thread pour effectuer un travail en arrière-plan à partir de là (pas besoin de créer un nouveau thread pour effectuer des opérations de blocage de l'UC).

13
abbas.aniefa

Service

  • Tâche sans interface utilisateur, mais ne devrait pas l'utiliser pour une longue tâche. Utiliser le fil au sein du service pour une tâche longue
  • Invoquer par onStartService()
  • Déclenché depuis n'importe quel fil
  • Fonctionne sur le fil principal
  • Peut bloquer main(UI) fil

IntentService

  • Tâche longue, généralement pas de communication avec le thread principal si une communication est nécessaire, elle est effectuée par Handler ou broadcast.
  • Invoquer via intention
  • déclenché à partir du thread principal ( L'intention est reçue sur le thread principal et le thread de travail est engendré )
  • Fonctionne sur un fil séparé
  • Nous ne pouvons pas exécuter de tâche en parallèle et plusieurs intentions sont mises en file d'attente sur le même thread de travail.
12
Umang Kothari

Service: Fonctionne dans le fil principal, ce qui provoquera un ANR (Android ne répond pas) après quelques secondes.

IntentService: Service avec un autre thread d'arrière-plan travaillant séparément pour faire quelque chose sans interagir avec le thread principal.

5
Mohamed Hussien

Le service d'intention est l'enfant du service

IntentService: Si vous souhaitez télécharger plusieurs images au début de l’ouverture de votre application. C'est un processus unique et peut se nettoyer une fois que tout est téléchargé.

Service: un service qui sera utilisé en permanence pour la communication entre votre application et le back-end avec des appels d'API Web. Même si la tâche en cours est terminée, vous souhaitez toujours qu'elle le soit quelques minutes plus tard, pour plus de communication.

2
sharma_kunal