Was passiert, wenn ein Service mehrmals gestartet wird?
Wenn ich den folgenden code:
Intent intent = new Intent(this,DownloadService.class);
for(int i=0;i<filesArray.length;i++){
startService(intent);
}
In diesem code DownloadService
erstreckt IntentService
.
So, jetzt, wenn ich rufe startService(intent)
bedeutet das, ich fange einen neuen service jeder Zeit startService(intent)
heißt oder bedeutet das, dass DownloadService
einmal ausgeführt wird und dann jedes mal, wenn ich rufe startService(intent)
es wird einfach eine andere Absicht mit einem anderen enthalten..
Macht das Sinn, und die eine von diesen ist der Fall ?
InformationsquelleAutor der Frage bytebiscuit | 2011-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Service nur in einer Instanz. Jedoch, jedes mal, wenn Sie starten Sie den Dienst, der
onStartCommand()
- Methode aufgerufen wird.Dies ist dokumentiert hier
InformationsquelleAutor der Antwort Philipp Wendt
Absolut Richtig.
Nur eine Instanz der Dienst erstellt für eine Anwendung Prozess.
Und wenn Sie anrufen, onStart(); wieder, dann nur onStartCommand() aufgerufen wird und new Intent übergeben wird, onStartCommand () - Methode.
Hinweis: onCreate() nicht erneut aufgerufen.
Über den Aufruf von bindService() mehrere Male:
Beim Aufruf bindService() mehrmals hintereinander, dann wieder nur eine Instanz verwendet wird, für den Service und die Android Runtime gibt gleichen IBinder-Objekt an den client.
Bedeutet, onBind() nicht mehrfach aufgerufen wird. Und nur Cache IBinder-Objekt zurückgegeben.
InformationsquelleAutor der Antwort Anish Mittal
Hinzufügen von ein paar mehr Informationen zu den oben genannten Antworten, die hilfreich sein können für andere ist, dass, enthalten., dass der onStartCommand () - Methode erhält, ist bei jedem anders startService () - Aufruf. Auch wenn wir schreiben in for-Schleife wie oben erwähnt, geschriebenen code in onHandleIntent() ausgeführt werden würde, so oft, wie definiert durch die für die loop-Frequenz, sondern in der Reihenfolge und nicht parallel.Das Konzept ist IntentService erstellt eine Warteschlange, und jeder Antrag auf startService () - trigger onStartCommand (), die wiederum speichert die Absicht in der Warteschlange und dann passieren die Absicht eins zu onHandleIntent().
InformationsquelleAutor der Antwort Rahul Gupta