如何实现 RxAndroidBle 的同步任务队列



摘要

我在我的项目中使用RxAndroidBle作为BLE通信框架。我通过以下方式写入后从通知中接收数据:

public Observable<byte[]> requestCharacteristic(UUID notificationUuid, UUID writeUuid, byte[] writeData) {
return Observable.zip(
connectionObservable.concatMap(rxConnection -> rxConnection.setupNotification(notificationUuid))
.concatMap(rxConnection -> rxConnection).first(),
connectionObservable.concatMap(rxConnection -> rxConnection.writeCharacteristic(writeUuid, writeData)),
(responseBytes, writeBytes) -> { return responseBytes; }
);
}

问题

由于BLE设备需要保证手机的同步请求,因此必须在请求执行完成后完成请求。我不熟悉 RX。如何执行FIFO方式执行上述代码?

正如您所说,您的代码将适用于单个执行,但是当有多个并行请求时,它们不会被序列化。您需要添加的是requestCharacteristic()函数的外部同步。

有一个已经回答的问题,即通过序列化的写入/通知处理保持持久连接,这可能正是您正在寻找的。答案是为基于RxJava1的库版本创建的,但是将其调整为RxJava2应该不会太难。

最新更新