Android 缓存/重用RxBleDevice实例是否存在问题?

Android 缓存/重用RxBleDevice实例是否存在问题?,android,bluetooth-lowenergy,rxandroidble,Android,Bluetooth Lowenergy,Rxandroidble,RxBleClientscanBleDevices发出一系列扫描结果对象。反过来,ScanResultgetBleDevice从其中一个发出的项提供RxBleDevice实例 缓存RxBleDevice实例以避免将来执行扫描是否存在任何问题 几个潜在的用例: 在需要实际连接到设备之前执行扫描。 一般扫描是针对不相关的操作执行的,因此利用此扫描期间发出的任何其他设备将是有效的。 至少有两种选择: 您可以自己缓存RxBleDevice实例,只要保留客户端实例。它在内部保留了一些对对象的引用,这些对象

RxBleClientscanBleDevices发出一系列扫描结果对象。反过来,ScanResultgetBleDevice从其中一个发出的项提供RxBleDevice实例

缓存RxBleDevice实例以避免将来执行扫描是否存在任何问题

几个潜在的用例:

在需要实际连接到设备之前执行扫描。 一般扫描是针对不相关的操作执行的,因此利用此扫描期间发出的任何其他设备将是有效的。
至少有两种选择:

您可以自己缓存RxBleDevice实例,只要保留客户端实例。它在内部保留了一些对对象的引用,这些对象的范围与客户机的生命周期有关。 您可以使用RxBleClientgetBleDevice传递MAC地址。RxBleDevice实例在客户端缓存,创建设备时不应出现性能问题。
值得注意的是,BLE堆栈的一些实现(例如三星的)无法成功连接到BluetoothAdapter开启之前创建的设备。换言之,打开蓝牙后,必须首先重新扫描设备,然后才能建立连接,即使在适配器关闭前已成功扫描设备。如果它不会发生,status=133通常以BluetoothGattCallback.onConnectionStateChange.Thance回复@pawel.urban返回。实际上,在扫描中找到设备后,我们已经在缓存MAC地址,因此我们可以继续使用RXbleClientGetDeviceMacAddress的现有方法。很高兴知道我们将获得与缓存RxBleDevice.interest information@dariuszeweryn相同的好处。我们曾经看到一些奇怪的行为,在之前发现设备后,它们无法连接到设备。我没能找到根本原因。也许这是你描述的结果。我将研究在蓝牙改变状态时使我们的MAC地址缓存失效。