Le Activity
dans son onStart() se lie au MusicPlayService
et, dans son onStop(), il désolidarise le MusicPlayService
. Dans son onDestroy(), il appelle le stopService, mais le onDestroy (MusicPlayService
de MusicPlayService
ne reçoit pas du tout.Non-signé et arrêté OnDestroy du service n'est pas appelé
****** MISE À JOUR: il est le isFinishing dans le onDestroy() est faux.
si vous appuyez sur le bouton Précédent, l'activité :: onDestroy() a isFinishing == true, et si vous appuyez sur le bouton d'accueil onDestroy() est appelée (le paramètre 'ne pas garder l'activité active' est coché) mais isFinishing == faux.
Je suppose que c'est le comportement correct, que l'activité finish() commencera à mettre isFinishing == true. Même si le bouton d'accueil déclenche le onDestroy(), l'os peut toujours penser que ce n'est pas le vrai «finir». Se demander si le nouveau cycle de vie LifecycleRegistryOwner pourrait fournir un peu de hook pour l'activité est vraiment être détruit.
Voici l'extrait de l'activité:
override fun onStart() {
super.onStart()
if (!isBound) {
val bindIntent = Intent(this, MusicPlayService::class.java)
isBound = bindService(bindIntent, myConnection,
Context.BIND_AUTO_CREATE)
}
}
override fun onStop() {
super.onStop()
unbindService(myConnection)
isBound = false
}
override fun onDestroy() {
super.onDestroy()
if (isFinishing) {
val intentStopService = Intent(this, MusicPlayService::class.java)
stopService(intentStopService)
}
}
A trouvé que c'est la vérification de isFinishing causant le problème, mais pourquoi quand onDestroy l'isFinishing est toujours faux? – lannyf