RxJava 2.0中的Observable和Flowable有什么区别?

x2b*_*ool 25 java rx-java

可观察和可流动的界面似乎是相同的.为什么Flowable是在RxJava 2.0中引入的?我什么时候应该使用Flowable over Observable?

mie*_*sol 37

文档所述:

关于在RxJava 0.x中引入背压的一个小遗憾是,Observable本身是改装的,而不是单独的基础反应类.背压的主要问题是许多热源,例如UI事件,不能合理地反压并导致意外MissingBackpressureException(即初学者不期望它们).

我们尝试通过io.reactivex.Observable非背压来补救2.x中的这种情况, 并且新的 io.reactivex.Flowable是基于背压的基础反应类.

Observable随着时间的推移(<1000)项目相对较少而使用和/或没有生产者过度消费消费者的风险,从而导致OOM.

Flowable当您拥有相对大量的项目时使用,并且您需要仔细控制Producer行为方式以避免资源耗尽和/或拥塞.


Backpressure 当你有一个可观察的物品如此快速地发射物品时,消费者无法跟上流量导致已发射但未消耗物品的存在.

背压策略处理的是由观察者发出但未被订户消费的未消耗物品如何被管理和控制.

参考链接

  • 我认为它们仍然应该支持一个公共接口,或者Flowable应该扩展Observable,这样它们就可以合并等等 (3认同)