0

我正在开发一个连接到 BLEDevice 的 APP。此连接由具有单例实例的粘性服务管理,该实例保留 BLE 连接的所有参数(BluetoothDevice、BluetoothGatt、BluetoothGattCallBack)。

APP 的行为在下一行中恢复:

  1. 当我打开 APP 时,我点击扫描、绑定并连接到所需 BLE 设备的按钮。
  2. 连接后,会出现一个测试按钮,允许我通过读取 BLE 设备的 Gatt 特性来测试连接是否已正确建立。
  3. 如果我杀死该应用程序,该服务仍然运行由于是粘性的。关键是不要失去与 BLE 设备的连接
  4. 然后,如果我再次打开应用程序并按下测试按钮,它应该可以工作。

问题出现在第 4 点。当我在关闭应用程序后单击测试按钮时,出现下一个错误:

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.bluetooth.BluetoothGattCharacteristic android.bluetooth.BluetoothGattService.getCharacteristic(java.util.UUID)'

据我了解,问题是BluetoothGatt对象丢失了。

我应该如何继续不丢失 BLE 连接?

4

0 回答 0