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

Android unbind Service on App crash or exit

我正在开发绑定到 Android 服务的 Android 应用程序。

问题是 Android 服务负责与另一台设备的蓝牙连接。

目前,我的服务公开了一个 DisconnectBluetooth() 方法,它将结束蓝牙连接。

我所做的是在我的 onDestroy 方法中调用 DisconnectBluetooth 方法,然后调用 unbindService,所以当应用程序停止时,蓝牙连接将关闭, 服务将解除绑定。

问题是,如果我的应用 崩溃 ,或者有时当我通过在应用选择器中滑动它来强制它 退出 时, 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() 方法,只有在 activity 显式调用 unbindService() 方法时才会被调用。

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

注意: 我正在使用 Xamarin,我不能保证它在 Java Android

上工作