Ein gebundener Dienst wird heruntergefahren, wenn der Dienst für alle Bindungen ungebunden wird.
Ein Dienst, der von startService()
gestartet wird, wird heruntergefahren, wenn der Dienst durch Aufruf von stopSelf()
oder stopService()
heruntergefahren wird.
Ein Dienst, der von startService()
und bindService()
aufgerufen wird, wird zerstört, wenn AND stopSelf() oder stopService()
.
Ein Dienst kann sowohl gestartet werden als auch über Verbindungen verfügen. In einem solchen Fall wird das System den Dienst so lange laufen lassen, wie es entweder gestartet ist oder es gibt eine oder mehrere Verbindungen mit das Context.BIND_AUTO_CREATE-Flag. Sobald keine dieser Situationen halten, wird die onDestroy() -Methode des Dienstes aufgerufen und der Dienst effektiv beendet. Alle Bereinigungen (Threads stoppen, Registrierung von Empfängern aufheben) sollten nach der Rückkehr von onDestroy() abgeschlossen sein.
- Von Service.Service Lifecycle | Android Developers Doc
In Ihrem Fall, wenn die Aktivitäten verschwunden sind, scheint der Dienst den ungebundenen Zustand einzutreten und zerstört werden kann.
Vielleicht müssen Sie startService()
in demselben Dienst aufrufen, wenn Sie die Wiedergabe starten, und stopSelf()
aufrufen, wenn Sie die Wiedergabe stoppen, damit der Dienst nicht während der Wiedergabe von Medien zerstört werden kann.
HINWEIS: Einige sagen, dass Sie stopSelf()
aufrufen müssen, nachdem alle freigegeben wurden. Manche sagen, dass die Reihenfolge von Stop und Unbind nicht relevant ist. Ich weiß nicht, was richtig ist.
Überprüfen Sie, ob onDestroy() des Dienstes aufgerufen wird oder nicht. – Naetmul
Wenn Sie die Verbindung trennen, wenn die Aktivität beendet ist, kann der Dienst beim Verlassen der Anwendung zerstört werden. Überprüfen Sie das zuerst. – Naetmul
Ihr Code ist nicht vollständig, legen Sie Ihre vollständige Klasse oder zumindest vollständigen Funktionscode hier. – chandil03