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

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

如文档中所述 :

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

我们尝试通过使io.reactivex.Observable非背压和新的io.reactivex.Flowable为背压启用的基础反应类来纠正2.x中的这种情况。

当一段时间内项目相对较少(<1000)时使用Observable和/或没有生产者过度消费消费者的风险 ,从而导致OOM。

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


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

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

参考链接