2016-05-24 16 views
0

Ich habe eine Service, wo ich eine Aufgabe in einem Thread ausführen. Ich nenne das oft Service und natürlich schafft es die entsprechende Anzahl an Threads.Warten Sie, bis alle Threads im Service fertig sind.

Wie werde ich wissen, wenn niemand Thread läuft, damit ich stopSelf() anrufen kann?

Antwort

1

Am einfachsten ist es, Ihre Serviceunterklasse IntentService zu erstellen. Dies ist eine spezielle Art von Dienst, der in einem Hintergrundthread Arbeit ausführt und den Dienst automatisch beendet, wenn keine weiteren Aufgaben ausgeführt werden. Es gibt einen einzelnen Thread pro Service, den Sie in Ihrem Manifest deklarieren. Alles, was Sie tun, ist zu bestimmen, welche Art von Arbeit Sie ausführen möchten, indem Sie implementieren, die automatisch in diesem Hintergrund-Thread für jeden Intent ausgeführt wird.

0

Sie können die laufenden Threads in einem Array verfolgen. Wenn jeder Thread fertig ist, sollte er sich selbst aus dem Array entfernen und eine Methode aufrufen, die prüft, ob irgendwelche Threads laufen. Diese Methode prüft nur, ob die Liste der laufenden Threads leer ist, und ruft dann stopSelf() auf.

Oder verwenden Sie IntentService, wenn dies Ihren Anforderungen entspricht.

Verwandte Themen