我正在开发绑定(bind)到 Android 服务的 Android 应用。
问题是 Android 服务负责与另一台设备的蓝牙连接。
目前,我的服务公开了一个 DisconnectBluetooth()
方法,它将结束蓝牙连接。
我所做的是在我的 onDestroy
方法中调用 DisconnectBluetooth
方法,然后调用 unbindService
,所以当应用程序停止时, 蓝牙连接关闭,服务解除绑定(bind)。
问题是,如果我的应用程序崩溃,或者有时当我通过在应用程序选择器中滑动它来强制它退出时,onDestroy
方法不会被调用。然后应用程序将退出,但服务仍然存在,因此蓝牙连接也仍然存在。
我该怎么做才能确保关闭蓝牙连接,并在可能的情况下解除绑定(bind)服务?
@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()
方法,只有在 Activity 显式调用 unbindService()
方法时才会被调用。
但是不,即使我的应用程序崩溃或通过滑动最近的应用程序选择器强制退出,它也会被调用。我决定使用 onunbind 而不是 onTaskRemoved
注意:我使用的是 Xamarin,我不能保证它能在 Java Android 上运行
关于Android 在应用程序崩溃或退出时取消绑定(bind)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098387/