Android Pros&缺点:事件总线和RxJava

时间:2015-05-10 04:54:55

标签: android reactive-programming rx-java event-bus

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

  • 链接任务执行很困难
  • 很多代表事件的课程
  • 不太清晰的代码(好吧,它仍然可以跟踪,但不是很清楚)

我一直在研究处理这个问题的新技术。我读了很多关于RxJava的内容,并想知道它是不是一个解决方案。

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

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

1 个答案:

答案 0 :(得分:9)

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

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

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