我正在开发一个连接到 BLEDevice 的 APP。此连接由具有单例实例的粘性服务管理,该实例保留 BLE 连接的所有参数(BluetoothDevice、BluetoothGatt、BluetoothGattCallBack)。
APP 的行为在下一行中恢复:
- 当我打开 APP 时,我点击扫描、绑定并连接到所需 BLE 设备的按钮。
- 连接后,会出现一个测试按钮,允许我通过读取 BLE 设备的 Gatt 特性来测试连接是否已正确建立。
- 如果我杀死该应用程序,该服务仍然运行由于是粘性的。关键是不要失去与 BLE 设备的连接
- 然后,如果我再次打开应用程序并按下测试按钮,它应该可以工作。
问题出现在第 4 点。当我在关闭应用程序后单击测试按钮时,出现下一个错误:
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.bluetooth.BluetoothGattCharacteristic android.bluetooth.BluetoothGattService.getCharacteristic(java.util.UUID)'
据我了解,问题是BluetoothGatt对象丢失了。
我应该如何继续不丢失 BLE 连接?