首页 > 解决方案 > refCount 即使发生错误也能保持连接

问题描述

我正在使用 refCount 保持 BLE 连接 5 分钟。这在我遇到连接问题之前效果很好,refCount 仍然保持连接并重播重播错误。

有没有一种方法可以让 refCount 在出现错误时立即断开连接,或者让重放而不是重放错误?

        bleDevice
            .establishConnection(false)
            .replay(1)
            .refCount(1, 5, TimeUnit.MINUTES)

标签: rx-javareactive-programmingrxandroidblerx-kotlin

解决方案


实现您想要的简单方法是使用 RxJava 3refCount运算符。您可以使用 RxJava 2 <=> 3 互操作性库RxJavaBridge

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

推荐阅读