2010-08-30 8 views
6

So verstehe ich den Service-Lebenszyklus und all das. Aber ich bin verwirrt, was der startId Parameter ist?Android service startId Parameter

public int onStartCommand (Intent intent, int flags, int startId) 

ich, dass es in Verbindung mit stopSelf(int) verwendet wird, aber ich sehe nicht, was der Punkt ist, oder wo die startId erzeugt wird. Welchen Anwendungsfall würde die Verwendung von stopSelf (int) unterlaufen?

Antwort

4

Welchen Anwendungsfall würde stopSelf (int) unterschreiten?

Schritt # 1: startService()

Schritt # 2 Rufen: Rufen Sie startService() wieder

Schritt 3: Rufen Sie stopSelf()

An dieser Stelle möchten wir der Dienst nicht angehalten werden, um, da gibt es noch ausstehende arbeit, vertreten durch den zweiten startService() ruf. Wir wollen die startService() und stopSelf() Anrufe übereinstimmen.

+0

Oh, ich denke ich verstehe es. Ich denke, ich überschätze das. Also würden wir startId nur bei Ausführung von onStartCommand() in einer globalen Variablen speichern und dann stopSelf (int) für diese globale Variable aufrufen. Okay, Gotcha. Ich habe versucht, darüber nachzudenken, die IDs in eine synchrone Queue oder etwas zu setzen lol – Falmarri

+1

@Falmarri: "Also würden wir startId nur auf eine globale Variable speichern, wenn onStartCommand() ausgeführt wird" - nein, da es mehrere davon geben wird. Vielleicht möchten Sie "IntentService" untersuchen und überlegen, ob das eine bessere Basisklasse für Sie ist. Es handhabt das 'stopSelf (int)' nennt sich selbst neben anderen Eigenschaften. – CommonsWare

+0

Hmm, dann denke ich, ich bin immer noch verwirrt. Wie würdest du selbst damit umgehen? Gibt es ein Beispiel? Ich habe keine Verwendung der startId in irgendwelchen Beispielen gesehen – Falmarri