当前位置: 首页 > 知识库问答 >
问题:

用rxjava-n订阅服务器始终监听替换EventBus

百里骏
2023-03-14

我将在一个Android应用程序中用RxJava替换EventBus模式。我有事件来提醒任何感兴趣的方面我的缓存中的数据更新单例。任何时候调用web服务,都将更新数据,并通过发布的事件向订阅者发出警报。

我在RxJava中使用AsyncSubject设置了与此类似的内容。观察者从subject获得单个事件,但随后获得oncomplete事件并取消订阅。这在UI第一次加载时起作用,但当需要刷新数据时,不会通知订阅者。如何告诉这些订阅服务器继续监听主题下一个事件?

WebServiceObservable OR CacheObservable
                  ^
                  |
             AsyncSubject
                  ^
                  |
                /   \
              /       \
            /           \
      UiObserver1   UiObserver2

共有1个答案

蒋鹏鹍
2023-03-14

一个有点晚的答案,但对您的scenarion来说,比BehaviorSubject稍微好一点的选择是来自RxRelay lib的BehaviorRelay。对于更多的全局解决方案,当您需要不同的行为,但希望共享所有模块之间的单点交互时,可以使用RxHub

 类似资料:
  • 第一,我试过了 第二,我尝试了下面的。(使用onErrorResumeNext),但取消了订阅。 (未调用onError,但调用OnComplete。因此已取消订阅) 第三,我试了下面。(带重试) 这比第一好。但没有刻录。 我想使刷新按钮,工作后错误。 我想知道 null 对不起,我的英语太差了。

  • 想象一下MVP模式中的情况,演示者订阅了一个返回观察者的服务: 现在,类从视图中调用方法,比如: 现在,在我的单元测试中,我想验证在非错误情况下调用方法时,是否调用了视图的方法。 问题是: 有没有干净的方法可以做到这一点? 背景: 我使用mockito来验证交互,当然还有更多 Dagger正在注入整个演示者,除了 我试过什么: 注入订阅服务器并在测试中模拟它。看起来有点脏,因为如果我想改变演示者与

  • 然后在run.csx中您只会收到消息 有没有一种方法可以使用azure函数监听任何主题/订阅,然后接收topicName&subscriptionName作为方法中的参数。 将topic-name作为*没有帮助,而且在中也没有提供topic-name。

  • 这似乎是最简单的解决办法。让我们看看流程: 第三方向RESTful API发送请求,以获取Windows Azure服务总线连接字符串-凭据-。 一旦拥有连接字符串,第三方就会连接到Windows服务总线,并开始从某个主题订阅接收消息。注意:连接字符串是在服务器端加密的,只能由接受的客户端解密。 优点 null null 第三方请求一个类似于RESTful的TCP API,以便订阅一些Window

  • 我正在尝试使用spring-integration-kafka-2.1.0。在我公司的项目中发布。但是,由于下面列出的例外情况,它不起作用:org。springframework。信息。MessageDeliveryException:Dispatcher没有频道“org”的订户。springframework。网状物上下文WebApplicationContext:/order。“奥Kafka”

  • 我正在尝试实现一个使用可观察的发出更改的类。当对此可观察对象完成订阅时,我想发送一个启动/初始化事件。然后我想发送通常的事件。 例如假设我有两个不同的订户A和B。A和B在不同的时间开始订阅。如果是MyClass。getChanges()发出事件1、2、3、4和5。 如果A在事件1、2之间启动it订阅,则应接收以下事件:InitialEvent、2、3、4、5。 如果B在事件4和5之间启动it订阅,