Kann ich stopSelf () in Service.onStartCommand aufrufen?

70

Es gibt einige Bedingungen, unter denen versucht werden könnte, meinen Dienst zu starten, wenn dies nicht der Fall sein sollte. Ist es in solchen Fällen eine schlechte Form, stopSelf()innerhalb einer onStartCommand()Methode aufzurufen ? Wenn ja, wie kann man mit einer solchen Situation am besten umgehen? Alle Ressourcen werden sehr geschätzt.

Spencer Ruport
quelle

Antworten:

90

Ist es eine schlechte Form, stopSelf () innerhalb einer onStartCommand () -Methode aufzurufen?

Ich kann mir nicht vorstellen, warum das ein Problem wäre.

stopSelf()hat, wie viele Dinge in Android, keine unmittelbare Wirkung. Es stellt eine Nachricht in die Nachrichtenwarteschlange, die vom Hauptanwendungsthread verarbeitet wird. Die eigentliche Arbeit zum Beenden des Dienstes beginnt erst einige Zeit nach onStartCommand()der Rückkehr.

CommonsWare
quelle
3
Ich dachte, es wäre nicht so, aber ich war mir nicht ganz sicher, wie die Service-Klasse funktioniert, und das Aufrufen einer Funktion, die den Start verhindert, bevor sie überhaupt beendet ist, scheint, dass ein startbezogenes Ereignis je nach Art zu unerwünschtem Verhalten führen kann wurde gestaltet.
Spencer Ruport
9
@SpencerRuport: hat stopSelf(), wie viele andere Dinge in Android, keine unmittelbare Wirkung. Es stellt eine Nachricht in die Nachrichtenwarteschlange, die vom Hauptanwendungsthread verarbeitet wird. Die eigentliche Arbeit zum Beenden des Dienstes beginnt erst einige Zeit nach onStartCommand()der Rückkehr.
CommonsWare
5
Was wäre als Folgefrage der angemessene Rückgabewert, der gerade aufgerufen wurde stopSelf()?
Mark
17
@ MarkCarter: Vermutlich START_NOT_STICKY.
CommonsWare