Android在应用程序崩溃或退出时取消绑定服务

时间:2016-06-29 11:35:03

标签: android service bluetooth android-service android-service-binding

我正在开发一款绑定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();
}

1 个答案:

答案 0 :(得分:1)

我一直认为重写onUnbind()方法,只有在活动显式调用unbindService()方法时才会调用。

但不,即使我的应用程序崩溃或通过刷新最近的应用程序选择器强行退出,也会调用它。我决定使用onunbind而不是onTaskRemoved

注意:我正在使用Xamarin,我无法保证这可以在Java Android上运行