2009-06-09 6 views
23

Je suis en train de jouer avec les services Android, et j'ai constaté que ServiceConnection.onServiceConnected() est appelé de façon assez prévisible lorsque je me lie à un service.Quand ServiceConnection.onServiceDisconnected() est-il appelé?

Cependant, ma méthode onServiceDisconnected() semble ne jamais être appelée, même après la mort de la machine virtuelle.

J'ai enregistré des messages de débogage sur le service et montre que tous les threads ont été arrêtés, etc. Je sais que les services sont implémentés en tant que processus; Y a-t-il des fils que je ne connais pas qui empêchent le processus de sortir?

Répondre

24

Cela se produit lors d'une panne de service à distance. Ainsi, si un service exécuté dans un processus différent de celui de votre client échoue à certaines exceptions, vous perdez la connexion et recevez le rappel.

+2

Est-ce juste un accident? Je m'attendrais à ce qu'il soit appelé quand j'appelle 'unbindService()' et le service se termine parce qu'il n'y a plus de clients. – sehugg

+3

selon la documentation, il ne se produit que sur 'unbinding service unbinding', donc oui, c'est seulement sur le crash, et non sur unbindService() – reflog

+2

Alors, comment pouvez-vous savoir si vous pouvez réellement se relier au service? Ou mieux, comment relies-tu? Uing un nouveau ServiceConnection? – Snicolas

Questions connexes