onCharacteristicChanged 不断接收 BLE 字节前台服务

onCharacteristicChanged keeps receiving BLE bytes foreground service

我在activity中写了BluetoothGattCallback。我还有一个 foreground service 运行 捕获用户位置。 当我终止我的应用程序时,我可以看到来自 Bluetooth Low Energy 的广告数据包一直在 onCharacteristicChanged 中接收。

但是当我删除 foreground service 时,一旦我终止该应用程序,来自 Bluetooth Low Energy 的广告数据包将停止在 onCharacteristicChanged 中接收(这是所需的状态)。

当我终止应用程序时,如何在 onCharacteristicChanged 中停止来自 Bluetooth Low Energy 的广告包?

我认为您对“杀死应用程序”的定义实际上是指“销毁 运行 activity”,这与“杀死应用程序进程”不是一回事。

蓝牙 API 与 Activity 逻辑完全分开。除非您主动采取措施阻止通知到达您的应用程序进程,并且除非蓝牙连接被断开,否则它们将继续出现,直到应用程序进程被终止。

如果您希望蓝牙连接在您销毁 Activity 时停止,您需要在 Activity 的 onDestroy 方法(或 onDestroy 您的 Activity 绑定到的服务的方法),例如确保在您的 BluetoothGatt 对象上调用 close 方法。

最后,您在 onCharacteristicChanged 中得到的是通知或指示。不是广告数据包。广告数据包是您执行扫描时得到的。