Android: Comment faire pour Arrêter le service est démarré par bindService() avec BIND_AUTO_CREATE option?
J'ai démarrer le service en utilisant:
private ServiceConnection _serviceConnection = new ServiceConnection() {...}
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE);
Je veux "redémarrer" le service. (Ne soyons pas expliquer pourquoi je veux le faire)
- Je le faire par:
unbindService(_serviceConnection);
//Do some initialization on service
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE);
J'ai remarqué que le service ne meurt pas(onDestroy ne fonctionne pas) jusqu'à ce que j'appelle prochaine bindService();
De sorte que certains d'initialisation statique que j'ai fait sur le service obtenu effacé par onDestroy() de la mise en œuvre.
Question: Comment vous assurez-vous unbindService() stop (onDestory()),
de sorte que je pouvais faire après l'initialisation et de ré-exécuter bindService()?
OriginalL'auteur jclova | 2010-11-18
Vous devez vous connecter pour publier un commentaire.
Android continue des services autour de à sa propre discrétion, même après l'appel de
unbindService
oustopService
.Si vous avez besoin immédiatement réinitialiser certaines données sur le côté service, vous aurez très probablement besoin de fournir un service à la méthode pour le faire.
OriginalL'auteur Timo Ohr
Le moment de
onDestroy()
après la dernièreunbindService()
est de durée indéterminée et certainement asynchrone. Vous pourriez également essayer d'appelerstopService()
vous-même, mais que trop est asynchrone, donc vous ne savez pas quand il sera arrêté.Je ne sais pas de manière fiable pour vous de "redémarrer" un service utilisant le motif de liaison.
OriginalL'auteur CommonsWare
Vous pouvez utiliser onRebind() si vous retournez vrai dans onUnbind().
voir ici:
http://developer.android.com/guide/components/bound-services.html
OriginalL'auteur esoir98