2015-07-16 6 views

Antwort

29

1. Unterschied zwischen Dienst und IntentService

Dienst: Es ist die Basisklasse für die Android-Dienste, die Sie für die Erstellung von beliebigen Service erweitern können. Da der Service im UI-Thread ausgeführt wird, müssen Sie einen Arbeits-Thread zum Ausführen seiner Arbeit erstellen.

IntentService: es ist eine Unterklasse von Service, die Ihre Arbeit vereinfacht. Es funktioniert bereits in einem funktionierenden Thread und kann asynchrone Anfragen empfangen. Sie müssen es also nicht manuell erstellen oder sich um die Synchronisierung kümmern. Sie können einfach erweitern und die Methode überschreiben:

onHandleIntent(Intent intent) 

, wo Sie alle eingehenden Anfragen verwalten.

einen Blick auf den documentation nehmen, können Sie in Details sehen, was die IntentService für Sie tun:

  • Erstellt einen Standard-Worker-Thread, die von Ihrer Anwendung Hauptthread geliefert alle Absichten zu onStartCommand() getrennt ausführt.
  • Erstellt eine Arbeitswarteschlange, die jeweils eine Absicht an Ihre onHandleIntent()-Implementierung übergibt, sodass Sie sich nie um Multithreading kümmern müssen.
  • Stoppt den Dienst, nachdem alle Startanforderungen bearbeitet wurden, sodass Sie nie mehr stopSelf() aufrufen müssen.
  • Stellt die Standardimplementierung onBind() bereit, die null zurückgibt.
  • Stellt eine Standardimplementierung von onStartCommand() bereit, die die Absicht an die Arbeitswarteschlange und dann an Ihre onHandleIntent() Implementierung sendet.

Also, wenn Sie mehr Kontrolle benötigen, können Sie die Service-Klasse verwenden, aber oft für einen einfachen Service die beste Lösung ist die IntentService.

2. Der Unterschied zwischen AsyncTask und Service

Sie sind zwei unterschiedliche Konzepte.

Dienst: kann als eine Aktivität ohne Schnittstelle gedacht werden. Es ist für lang andauernde Operationen geeignet.

AsyncTask: ist eine bestimmte Klasse, die einen Arbeits-Thread umschließt (Ausführen von Hintergrundoperationen) und die Interaktion mit dem UI-Thread erleichtert, ohne Threads oder Handler direkt zu verwalten.

+0

Es gibt schöne Erklärung hier http://stackoverflow.com/a/15772151/1533670 – NPE

+0

Diese Erklärung ist schön, aber wenn Sie etwas detaillierter auf AsyncTask gehen könnte (vor allem die Nachteile) wäre es besser. –

+0

Es gibt eine Menge zu sagen über AsyncTask, und dazu gibt es die Dokumentation. Ich versuchte es kurz zu halten und wies nur auf die Unterschiede mit dem 'Service' hin – GVillani82

0

Kurz gesagt, ein Service ist eine breitere Implementierung für den Entwickler zum Einrichten von Hintergrundoperationen, während ein IntentService nützlich ist für "fire and forget" -Operationen, kümmert sich um Hintergrund Thread-Erstellung und Bereinigung.

Aus der Dokumentation:

Service Ein Service ist eine Anwendungskomponente entweder eine Anwendung Wunsch darstellt, einen länger laufenden Betrieb durchzuführen, während nicht mit dem Benutzer interagieren oder Funktionalität liefern für andere Anwendungen zu verwenden.

IntentService IntentService ist eine Basisklasse für Dienste, die bei Bedarf asynchrone Anforderungen (ausgedrückt als Intents) verarbeiten. Clients senden Anfragen über startService (Intent) -Aufrufe; Der Dienst wird nach Bedarf gestartet, behandelt jede Absicht der Reihe nach mit einem Arbeitsthread und beendet sich selbst, wenn keine Arbeit mehr zur Verfügung steht.

Service vs IntentService

What is the difference between an IntentService and a Service?

Verwandte Themen