2009-06-09 14 views
23

私はAndroidサービスを使いこなしています。私はサービスにバインドするときにServiceConnection.onServiceConnected()がかなり予想通りに呼び出されることがわかりました。ServiceConnection.onServiceDisconnected()はいつ呼び出されますか?

しかし、私のonServiceDisconnected()メソッドは、VMが終了した後でも、決して呼び出されないようです。

サービスにデバッグメッセージを記録し、すべてのスレッドがシャットダウンしたことを示しています。サービスはプロセスとして実装されています。プロセスが終了するのを妨げているスレッドがありますか?

答えて

24

リモートサービスがクラッシュした場合に発生します。したがって、クライアントとは別のプロセスで実行されているサービスが何らかの例外で失敗した場合、接続が失われてコールバックが返されます。

+2

ちょうどクラッシュしていますか? 'unbindService()'を呼び出すと呼び出され、サービスがなくなるためサービスが終了すると思います。 – sehugg

+3

文書によると、予期しないサービスのバインド解除時にのみ発生するので、クラッシュ時にのみ、unbindService()にはno。 – reflog

+2

サービスに実際に再バインドできるかどうかはどのように分かりますか?それとも、どうやって再バインドしますか?新しいServiceConnectionを使用していますか? – Snicolas

関連する問題