【问题标题】:refCount keeping connection even after an errorrefCount 即使发生错误也能保持连接
【发布时间】:2021-08-07 21:19:44
【问题描述】:

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

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

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

【问题讨论】:

  • 如果没有订阅者强制存在,.refCount() 是否会在超时之后断开连接?
  • 你有哪个 RxJava 版本? 3.x 应该可以正常工作。
  • 不幸的是,RxAndroidBle 仍然是基于 2.x 的。计划对此进行更改。
  • @DariuszSeweryn BT 连接创建速度很慢(用户需要在 BT 设备上确认连接),因此对于这个特定设备,我们希望保持连接。

标签: rx-java reactive-programming rxandroidble rx-kotlin


【解决方案1】:

实现您想要的简单方法是使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2013-06-28
    • 2012-12-08
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多