RxJava 入门
基于观察者模型&责任链模式
RxJava的设计思路中很明显的亮点就是其对观察者/订阅者模型 ,以及责任链模式的使用,在该责任链中以数据为驱动,大致可以分为三种角色:
- 生产者
- 消费者
- 处理器
整个工作流程大致如下:
发送数据 处理后向后传递 最终消费数据
[生产者]----------->[处理器]----------->[消费者]
其中,一个数据链路中可以有多个处理器,比如:
[生产者]---->[处理器1]---->[处理器2]---->[处理器3]---->[消费者]
我们以处理器2的视角来看,其左边的数据流部分称为 数据上游 ,右半部分被称为 数据下游。
了解数据上下游对我们使用RxJava也是有很大帮助的,因为我们实际上可以指定数据上下游的执行线程,可以通过一些代码来验证。
时机
在RxJava中的官方文档中,有提到几个关键的时机,将RxJava的运行拆解成了三个步骤:
- 组装时机:准备数据流的时机,这个过程还包括各种对发射源的操作符。
- 订阅时机:对准备好的数据流进行订阅。
- 运行时机:数据源实际开始发送数据的过程。
基础数据源的种类
RxJava中有几个基本的组件(流):
RxJava 3 features several base classes you can discover operators on:
io.reactivex.rxjava3.core.Flowable: 0…N flows, supporting Reactive-Streams and backpressure
io.reactivex.rxjava3.core.Observable: 0…N flows, no backpressure,
io.reactivex.rxjava3.core.Single: a flow of exactly 1 item or an error,
io.reactivex.rxjava3.core.Completable: a flow without items but only a completion or error signal
io.reactivex.rxjava3.core.Maybe: a flow with no items, exactly one item or an error.
大概有以下五种:
- Flowable
- Observable
- Single
- Completable
- Maybe
每个组件都有自身的职责:
- Flowable:flowable 是一个发送数据的源,支持响应式的流和背压,至于什么是背压,后面会提到。
- Observable
Observable 和 flowable 类似,是一个数据的发送源,不同的是它不支持背压策略。 - Single
Single 是只支持一个数据发送的数据源。 - Completable
Completable 是一个不携带数据的流,我们一般用来传递信号。 - Maybe
Maybe 可能不携带数据,也可能携带一个数据或者是错误。
创建数据源
这里介绍一个通用的创建数据源的方法,即直接使用 XXXX.create() 方法,比如如果我们想要创建一个Observable,可以用以下的方式:
Observable.create(emitter -> {
for (int i = 0;i < 5;i++) {
emitter.onNext(i);
}
});
这是一种最通用的方式,理论上这种方式可以创建所有我们需要的数据源。除此之外还有一些预制的手段:

最低0.47元/天 解锁文章
557

被折叠的 条评论
为什么被折叠?



