Android RxJava第一弹之原理详解、使用详解、常用场景(基于Rxjava2.0)
Android RxJava第二弹之RxJava封装库 RxJava+Animation RxJava+Glide
Android RxJava第三弹之RxJava2.0尝鲜
在Android RxJava第一弹之原理详解、使用详解、常用场景(基于Rxjava2.0)一文中我一直在说RxJava2.0,2.0在16年八九月份的时候新出来 ,让我们一探究竟吧
引言
RxJava 2.0 has been completely rewritten from scratch on top of the Reactive-Streams specification. The specification itself has evolved out of RxJava 1.x and provides a common baseline for reactive systems and libraries.
RxJava2.0已经根据渐渐完善的Reactive-Streams规范来完全重写。规范本身从RxJava1.x发展来的,并提供了reactive systems and libraries共同的基准。
Migrating from RxJava 1.0 to RxJava 2.0 and Learn RxJava by Examples
接口变化
RxJava2 是遵循 Reactive Streams Specification 的规范完成的,新的特性依赖其提供的4个基础接口。分别是
- Publisher
- Subscriber
- Subscription
- Processor
- Flowable与Observable
新的实现叫做Flowable, 同时旧的Observable也保留了。因为在 RxJava1.x 中,有很多事件不被能正确的背压,从而抛出MissingBackpressureException。
举个简单的例子,在 RxJava1.x 中的 observeOn, 因为是切换了消费者的线程,因此内部实现用队列存储事件。在 Android 中默认的 buffersize 大小是16,因此当消费比生产慢时, 队列中的数目积累到超过16个,就会抛出MissingBackpressureException, 初学者很难明白为什么会这样,使得学习曲线异常得陡峭。
而在 2.0 中,Observable 不再支持背压,而Flowable 支持非阻塞式的背压。并且规范要求,所有的操作符强制支持背压。幸运的是, Flowable 中的操作符大多与旧有的 Observable 类似。