2016-07-14 12 views
0

IntentService hat seinen eigenen Thread, startet einen anderen Thread von handleIntent, der Dienst als live oder abgeschlossene Dienst betrachtet und spielt keine Rolle ein anderer Thread ist aktiv oder nicht? und sobald der IntentService seinen Job abgeschlossen hat, ist es möglich, zum Hauptthread zurückzukehren und einen anderen Thread aufzurufen, aber der Start des anderen Threads könnte vom Hauptthread und nicht von der Aktivität sein, da der Dienst seinen Job während irgendeiner Aktivität abschließen könnte Aktivität.Wie der IntentService seine Aufgabe erfüllt. Ist es möglich, einen anderen Thread vom UI-Thread zu starten, aber nicht von der Aktivität?

Antwort

0

IntentService hat einen eigenen Thread, beginnend anderen Thread von handleIntent

Sie das nicht immer tun. Sobald die Methode IntentServiceonHandleIntent() zurückgibt, wird der Dienst zerstört und der Prozess wird wahrscheinlich ebenfalls beendet. Android hat keine Ahnung, welche Threads Sie gestartet haben, also weiß es, dass Ihr Prozess im Leerlauf ist und Ressourcen verschwendet.

Wenn Sie auf „Start“ etwas anderes, wenn die IntentService getan wird, verwenden startActivity(), startService() oder sendBroadcast() (je nachdem, was angemessen ist). Wiederum kennt Android deine Threads nicht.

Wenn Sie Semantik Prozedur Prozedur benötigen (z. B. Dienst starten, führen Sie einige Aufgabe, dann die Steuerung an den Aufrufer zurückgegeben), IntentService ist nicht das richtige Werkzeug. Verwenden Sie einen gebundenen Dienst (oder einen gebundenen AIDL-Dienst, wenn Sie Prozessgrenzen überschreiten müssen).

+0

Danke, ich habe den ersten Teil, sobald der IntentService seinen Job vervollständigt, entsprechende Daten erhalten, ich muss einen anderen Thread starten, der Punkt ist der zweite Thread, den ich vom Hauptthread starten muss, aber ich don Ich möchte nicht, dass der Empfänger für den Abschluss von IntentService die Aktivität sein soll, da der Abschluss von IntentService während irgendeiner aktiven Aktivität sein könnte, möchte ich einen globalen Platz, der IntentService-Vervollständigung verarbeiten kann, wo ich einen anderen Thread starten könnte. –

+0

Tun Sie das nicht. Sie sollten niemals Threads von einem 'IntentService' erstellen. Ich kann hier nicht wirklich helfen, da du nur Aussagen machst wie "der zweite Thread, den ich vom Hauptthread starten muss" ohne Erklärung warum. –

+0

Ok der Punkt ist, dass ich Bibliothek, die Download-Mechanismus verwendet, aber vor dem Start der zweiten brauche ich Ressourcen abrufen und sobald ich Ergebnis 2_n Thread (die Download-Mechanismus behandelt) erhalten und berücksichtigen, dass der erste Thread fortgesetzt werden sollte Es ist Job, selbst wenn ich die Aktivität verlasse. deshalb wollte ich IntentService verwenden jeder Hinweis könnte hilfreich sein, danke –