Android优缺点:Event Bus和RxJava

Pab*_*oso 14 android reactive-programming event-bus rx-java

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

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

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

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

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

aka*_*okd 9

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

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

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