Pouvez-vous m'aider à comprendre quelle est la différence entre un IntentService
et un Service
?
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
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
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.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.IntentService
implémente onBind()
qui renvoie null
. Cela signifie que le IntentService
ne peut pas être lié par défaut.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.
service: Il fonctionne en arrière-plan sur votre système. Par exemple,
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.
Voir Tejas Lagvankar post à ce sujet. Vous trouverez ci-dessous les principales différences entre Service et IntentService et d’autres composants.
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).
Service
onStartService()
main(UI
) filIntentService
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.
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.