2010-06-18 5 views
5

In Android, wenn ich einige Hintergrundinformationen Arbeit tun will, was ist der Unterschied zwischenAndroid - Run im Hintergrund - Dienst oder Standard-Java-Klasse

einen Service der Arbeit zu tun, und mit der Aktivität des Start Service VS. Erstellen einer Standard-Java-Klasse, um die Arbeit zu erledigen, und mit der Aktivität ein Objekt der Klasse erstellen und Methoden aufrufen, um die Arbeit in einem separaten Thread zu erledigen.

+0

siehe diese http://stackoverflow.com/questions/2633334/application-threads-vs-service-threads –

Antwort

5

Eigene Threads zu machen ist zu viel, es gibt Lösungen dafür, so dass Sie sich keine Gedanken über die harten Teile des Nebenläufers machen müssen. Schauen Sie sich AsyncTask oder IntentService an. Wenn Sie eine Dienstleistung in Anspruch nehmen, beachten Sie bitte, dass Ihre Dienstleistung jederzeit beendet werden kann.

+0

In den meisten Fällen ist AsyncTask genug für alle Aufgaben, die Sie auf einem anderen Thread ausführen möchten. – Janusz

3

Nun, Android bietet einige nützliche Methoden für die Herstellung von Worker-Threads leicht. Sehen Sie sich die Klassendefinition Looper an. Sie können Ereignisse über einen Handler senden, die nacheinander in einem anderen Thread ausgeführt werden oder Nachrichten zwischen verschiedenen Threads übertragen.

Ein Service ist nichts Besonderes. Das Erstellen eines Service ist nur eine Möglichkeit, dem Betriebssystem mitzuteilen, dass Sie einige Arbeiten ausführen müssen, auch wenn Ihre Aktivität nicht sichtbar ist.

2

Abhängig von der Anwendung, die Sie erstellen, ist es möglicherweise keine Option.

Fast jede Netzwerkanwendung verfügt über einen Teil ihrer Funktionalität in einem Dienst, damit der Benutzer aktive Aktivitäten ändern kann, während etwas heruntergeladen wird.

In einem RSS-Reader können Sie zum Beispiel auf "Alle aktualisieren" klicken und je nach der aktuellen Datenverbindung dauert es etwas länger als gewünscht. Wenn Sie also möchten, dass der Benutzer zum Startbildschirm zurückkehrt und weitere Aktionen ausführt, während die Dateien heruntergeladen werden, müssen Sie einen Dienst verwenden.

Mit einem Dienst können Sie Aufgaben im Hintergrund ausführen, während der Benutzer nicht in Ihrer Aktivität ist. Dies bedeutet nicht, dass es die ganze Zeit läuft. Überprüfen Sie die Service lifecycle.

BTW IntentService ist ein Service.