在Observable创建之前订阅Rx

时间:2016-08-13 03:54:07

标签: android rx-java observable event-bus

在项目中,有许多模块。每个模块可能希望接收从其他模块/模块发出的数据。

试图解决的问题是,当我们订阅一个可观察的A时,可能还没有创建这个observable。为了解决这个问题,我们讨论了两种方法:

  1. 有一个Observable Registry单例。每当一个observable准备就绪时,将一对放入注册表,并通知所有模块注册表已更改。每个模块都会听取此通知,并确定它是否是您感兴趣的更改。如果通知可观察对象已准备好,请订阅它。如果删除了observable,请更新注册表,删除相应的对,并通知模块,模块取消订阅。
  2. Rx实施了event bus。使用Subject:创建单个主题,然后每当需要发出事件或数据或项目时,从该主题发出它。在您的订阅者中,您只能通过使用主题过滤器来订阅特定事件。
  3. 第一种方法看起来非常简单,我不知道为什么它不好。但它对我来说并不具有可扩展性。第二种方法是用Rx替换otto / eventbus的推荐方法。

    对这些方法有何看法?

1 个答案:

答案 0 :(得分:0)

对我来说,第一种方法并不是那么简单,也不是很难处理。订阅者可以订阅主题并在该主题存在时开始接收事件,并且他们不知道是否存在新的事件源,因为他们不关心。

我使用版本2的扩展变体,即RxHub library。它非常灵活,因为每个主题/标签允许不同的行为。