私はAndroidサービスにバインドするAndroidアプリを開発中です。Androidサービスのアンバインド時にアプリケーションがクラッシュまたは終了する
問題は、Androidサービスが別のデバイスとのBluetooth接続を担当していることです。
今のところ私のサービスではDisconnectBluetooth()
メソッドが公開されており、これによりBluetooth接続が終了します。
私が行うことは、onDestroy
メソッドの中でunbindService
メソッドを呼び出した後、DisconnectBluetooth
メソッドを呼び出すことです。アプリケーションが停止すると、Bluetooth接続が閉じられ、サービスはアンバインドされます。
事は私のアプリであればクラッシュということである、または私はアプリのセレクタでそれをswippingによって終了にそれを強制するとき、時々、onDestroy
メソッドが呼び出されません。アプリは終了するが、サービスはまだ生きているので、Bluetooth接続もまだ生きている。
Bluetooth接続を確実に閉じるために、可能な場合はサービスのバインドを解除するにはどうすればよいですか?
@Override
protected void onDestroy() {
if (_api.isConnect()) { //<-- If bound to service, and everything OK
_api.DisonnectBluetooth(); //<-- Close BT connection with device
_api.ReleaseService(); //<-- Unbinds service
}
}
super.onDestroy();
}
** onDestroy()**と同義ではありません** unbindService()**。あなたは、始まったサービスと束縛されたサービスを一緒にしたいと思うかもしれません。これを読んでください:developer.android.com/guide/components/bound-services.html - 'サービスの開始とバインドを許可すると、サービスが開始されると、システムはすべてのクライアントアンバインドする。代わりに、stopSelf()またはstopService()を呼び出して明示的にサービスを停止する必要があります。 ' –