我正在开发一款绑定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();
}
答案 0 :(得分:1)
我一直认为重写onUnbind()
方法,只有在活动显式调用unbindService()
方法时才会调用。
但不,即使我的应用程序崩溃或通过刷新最近的应用程序选择器强行退出,也会调用它。我决定使用onunbind而不是onTaskRemoved
注意:我正在使用Xamarin,我无法保证这可以在Java Android上运行