0

Angenommen, ich möchte, dass meine App Daten aus einer Onlinedatenbank mit der lokalen Datenbank synchronisiert. Aus meiner Sicht sind Dienste die zu suchenden Komponenten.Ausführen eines neuen Threads von IntentService

Wenn ich einen normalen Dienst starte, verstehe ich, dass es im Hauptthread beginnt und jede zeitraubende Aufgabe, die ich ausführe, wird die Benutzeroberfläche blockieren. Das bedeutet, dass ich etwas wie eine AsyncTask verwenden muss, um die Arbeit zu erledigen.

Auf der anderen Seite, wenn ich einen Intent-Service verwende, verstehe ich, dass es auf einem parallelen Thread läuft und die Benutzeroberfläche nicht blockiert ist, wenn ich eine lange Aufgabe ausführen. Und jeder andere Intent-Dienst, den ich anrufe, wird in die Warteschlange gestellt.

Aber was passiert, wenn ich einen parallelen Thread vom IntentService erzeuge, um einen Netzwerkanruf zu tätigen?

Wird der Intent-Dienst warten, bis mein Netzwerkanruf abgeschlossen ist, oder wird der Aufruf in einem parallelen Thread ausgeführt und der nächste Intent-Dienst in der Warteschlange ausgeführt?

+1

Warum müssen Sie parallel Thread in parallelen Thread erstellen, um Netzwerkanruf zu machen ??? Verwenden Sie es in 'IntentService' directly –

+0

Warum ein paralleler Thread während' if' Anweisung beendet? – Xenolion

+0

Ich war nur neugierig. Ich mache das nicht haha –

Antwort

0

Nur die Lebenszyklusaufrufe (z. B. onCreate(), onStartCommand()) werden im Haupttool (UI) in einem Service aufgerufen. Wenn Sie Hintergrundaktivitäten haben, können Sie einfach Ihre eigenen Hintergrundthreads in onStartCommand() starten. Sie müssen dazu IntentService nicht verwenden.

IntentService ist eine spezifische Implementierung von Service, die ein bestimmtes Verhalten hat. Sie senden es "Arbeit", indem Sie startService() aufrufen und eine Intent übergeben, die die auszuführende Arbeit beschreibt. Die IntentService läuft, bis alle der Warteschlange "Arbeit" abgeschlossen ist und sich dann selbst beendet. IntentService ist nur eine Thi8n-Schicht über regulären Service, die die Warteschlange der "Arbeit", die Ausführung der "Arbeit" in Hintergrundthreads und die automatische Abschaltung der IntentService behandelt. Wenn dies nicht das gewünschte Verhalten ist, sollten Sie nicht versuchen, IntentService zu verwenden, da es nicht für alle Situationen geeignet ist. Es ist nicht so schwierig, Hintergrund-Threads in einem Service selbst zu starten.

Verwandte Themen