refCount 即使发生错误也能保持连接

问题描述

我正在使用 refCount 保持 BLE 连接 5 分钟。这很有效,直到我遇到连接问题,refCount 仍然保持连接并重放重放错误

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

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

解决方法

实现您想要的简单方法是使用 RxJava 3 refCount 运算符。您可以使用 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