Rx java refCount即使在发生错误后仍保持连接
我正在使用refCount保持BLE连接5分钟。在我遇到连接问题之前,这一切都很好,refCount仍然保持连接,replay会重放错误 有没有一种方法可以使refCount在出现错误时立即断开连接,或者使replay不重播错误Rx java refCount即使在发生错误后仍保持连接,rx-java,reactive-programming,rxandroidble,rx-kotlin,Rx Java,Reactive Programming,Rxandroidble,Rx Kotlin,我正在使用refCount保持BLE连接5分钟。在我遇到连接问题之前,这一切都很好,refCount仍然保持连接,replay会重放错误 有没有一种方法可以使refCount在出现错误时立即断开连接,或者使replay不重播错误 bleDevice .establishConnection(false) .replay(1) .refCount(1, 5, TimeUnit.MINUTES) 实现所需功能的
bleDevice
.establishConnection(false)
.replay(1)
.refCount(1, 5, TimeUnit.MINUTES)
实现所需功能的简单方法是使用rxjava3
refCount
运算符。您可以使用RXJava23互操作性库
是否有一个超时,在此超时之后,
.refCount()
将断开连接,如果没有订阅服务器是必需的?您有哪个RxJava版本?3.x应该像您期望的那样工作。不幸的是RxAndroidBle仍然是基于2.x的。这是计划更改的。@Dariuszweweryn BT连接创建速度慢(需要用户在BT设备上确认连接),因此对于此特定设备,我们希望保持连接。
val connectionObservable = bleDevice
.establishConnection(false)
.`as`(RxJavaBridge.toV3Observable())
.replay(1)
.refCount(1, 5, TimeUnit.MINUTES)
.to(RxJavaBridge.toV2Observable()) // optional if you want to stick to RxJava 3