我正在开发一个绑定Android服务的Android应用。
问题是Android服务负责与另一个设备的蓝牙连接。
现在,我的服务公开了一个DisconnectBluetooth()
方法,它将结束蓝牙连接。
我所做的是调用DisconnectBluetooth
方法,然后调用unbindService
,在我的onDestroy
方法中,所以当应用程序停止时,蓝牙连接将被关闭,服务将被解除绑定。
事情是,如果我的应用程序崩溃,或者有时当我强迫它退出通过在应用程序选择器中滑动它,onDestroy
方法将不会被调用。然后应用程序将被退出,但服务仍然是活的,因此蓝牙连接也仍然是活的。
我该怎么做,以确保关闭蓝牙连接,并在可能的情况下解除绑定服务?
@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();
}
我一直认为重写onUnbind()
方法,只有当活动显式调用unbindService()
方法时才会被调用。
但是不,即使我的应用程序崩溃或强制退出通过滑动最近的应用程序选择器,它被调用。所以我决定使用onunbind而不是ontaskremove
注意:我正在使用Xamarin,我不能保证这在Java Android上工作