Take notes for RxJava2

首先了解 响应式编程 和 观察者模式

响应式编程

响应式编程是一种面向数据流、通过异步的方式来构建事务关系的编程模型。

不同于命令式编程环境中,a=b+c表示将表达式的结果赋给a,而之后改变b或c的值不会影响a。但在响应式编程中,a的值会随着b或c的更新而更新。

Excel就是响应式编程的一个例子。单元格可以包含字面值或类似"=B1+C1"的函数,而包含公式的单元格的值会依据其他单元格的值的变化而变化。

“事务的关系”是响应式编程的核心理念

这种关系不是类的依赖关系,而是业务逻辑上的关系。比如APP初始化中,SDK初始化,数据库初始化,登陆接口,他们共同被跳转页面业务所依赖。但是他们三个本身并没有关联。这也只是业务之间较为简单的关系,实际上,根据我们的需求App端会产生出许多业务之间错综复杂的关系。

“数据流”和“异步”是实现这个核心理念的关键。

Gradle

implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

implementation 'io.reactivex.rxjava2:rxjava:2.0.7'

与RxJava1的区别

1 RxJava2x 不再支持 null 值,如果传入一个null会抛出 NullPointerException

2  Observable.just(null)(不支持)

 3 RxJava2 所有的函数接口(Function/Action/Consumer)均设计为可抛出Exception,

自己去解决编译异常需要转换问题。

4 RxJava1 中Observable不能很好支持背压,在RxJava2 中将Oberservable实现成不支持背压,而新增Flowable 来支持背压。

操作符

create

observable是被观察者,observer是观察者,拆分订阅


不拆分

just


fromArray


just (2个参数 ) fromArray (多个参数)

empty


区分使用Observable与Flowable

Observable    一般处理<=1000条数据,并且几乎不会出现内存溢出

如鼠标事件(click),频率不超过1000 Hz,基本上不会背压;

Flowable    处理以某种方式产生>10K的元素;文件读取与分析,

如读取指定行数的请求;

网络IO流;

有很多的阻塞() 或 基于拉取的数据源,但是又想得到一个响应式非阻塞接口的。


BackpressureSrategy被压策略

BackpressureStrategy参数的含义

BackpressureStrategy.ERROR:若上游发送事件速度超出下游处理事件能力,且事件缓存池已满,则抛出异常

//阻塞时队列

BackpressureStrategy.BUFFER:若上游发送事件速度超出下游处理能力,则把事件存储起来等待下游处理

BackpressureStrategy.DROP:若上游发送事件速度超出下游处理能力,事件缓存池满了后将之后发送的事件丢弃

BackpressureStrategy.LATEST:若上有发送时间速度超出下游处理能力,则只存储最新的128个事件

只会处理500条

你可能感兴趣的:(Take notes for RxJava2)