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



我正在开发一个绑定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上工作

相关内容

  • 没有找到相关文章

最新更新