17

我一直在我的应用程序中使用事件总线(即:greenrobot/EventBus)。但是我发现使用事件总线有一些缺点:

  • 链接任务执行很困难
  • 很多类来表示事件
  • 不太清晰的代码(嗯,它仍然可以追踪,但不是那么清晰)

我一直在研究解决这个问题的新技术。我读了很多关于 RxJava 的文章,想知道它是否可以成为一个解决方案。

所以我关于 RxJava 的问题(基于我最近阅读的内容):

  • RxJava 观察者可以随时注册吗?所以不仅仅是在创建 Observable 时。使用 EventBus,这是可能的,我可以随时订阅,而不仅仅是在创建 Observable 时。
  • 您如何处理两个或多个发布者发布相同类型的事件(例如:导航事件)?
  • 将发布者和订阅者紧密耦合意味着我每次都必须明确指定发布者。所以我不仅要担心事件的类型,还要担心发起者。使用 EventBus,我只需要担心事件的类型而不是发起者。
4

1 回答 1

9

1) 一旦你有了一个 Observable 的实例,你就可以随时从任何线程订阅它,甚至可以同时订阅。

2)我们通常通过 Observable.merge() 合并多个 observable 的流,或者使用序列化的 PublishSubject。

3)如果你观察一个 Observable,可能会涉及到几十个上游操作符和源,但无论如何你都会得到一个连续的值流。您只需要保留一个表示某些事件源的 Observable,观察者不需要知道该事件是否已合并、过滤、通过网络进行往返并在到达您的 onNext() 方法之前被延迟。你可以自然地实现或使用一些查找服务来获得 Observable 以减少耦合,但是对于 RxJava,耦合通常不是问题。

于 2015-05-13T11:22:45.637 回答