開始型とバインド型の両方のサービスがあります(ここで定義されています)。無期限に実行が開始され、別のアプリケーションがバインドされます。このアプリケーションが破棄されると、unbindService
そのonDestroy
メソッドで が呼び出されます。
サービスは、このアプリケーションが終了したことを検出する必要があります。サービスによって公開された特定のインターフェイスからすべてのクライアントが切断されたときに呼び出されるonUnbindメソッドについて読みました。ただし、すべてのクライアントが切断されたときではなく、切断されたときに知る必要があります。出来ますか?
私は、(メソッド内で) クローズ中にonDestroy
、アプリケーションがサービスにメッセージを送信できると考えました (サービスがバインドされているという事実を利用して): 後でunbindService
、次のようにメソッドを呼び出す必要があります。
// method of the application
@Override
public void onDestroy() {
super.onDestroy();
service.closed(); // service is defined by IService.aidl
unbindService(...);
}
このようにして、アプリケーションは最後のメッセージをサービス (service.closed()
メソッド) に送信してから、サービスのバインドを解除します。正しく動作するでしょうか?service.closed()
メッセージが宛先に到着したとき、メソッドは戻りますか? または、メソッドへの次の呼び出しのためにメッセージが配信されないというリスクがある可能性はありますunbindService
か?