RxJava入门

RxJava 入门

基于观察者模型&责任链模式

RxJava的设计思路中很明显的亮点就是其对观察者/订阅者模型 ,以及责任链模式的使用,在该责任链中以数据为驱动,大致可以分为三种角色:

  • 生产者
  • 消费者
  • 处理器

整个工作流程大致如下:

发送数据        处理后向后传递         最终消费数据
[生产者]----------->[处理器]----------->[消费者]

其中,一个数据链路中可以有多个处理器,比如:

[生产者]---->[处理器1]---->[处理器2]---->[处理器3]---->[消费者]

我们以处理器2的视角来看,其左边的数据流部分称为 数据上游 ,右半部分被称为 数据下游

了解数据上下游对我们使用RxJava也是有很大帮助的,因为我们实际上可以指定数据上下游的执行线程,可以通过一些代码来验证。

时机

在RxJava中的官方文档中,有提到几个关键的时机,将RxJava的运行拆解成了三个步骤:

  1. 组装时机:准备数据流的时机,这个过程还包括各种对发射源的操作符。
  2. 订阅时机:对准备好的数据流进行订阅。
  3. 运行时机:数据源实际开始发送数据的过程。

基础数据源的种类

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

每个组件都有自身的职责:

  1. Flowable:flowable 是一个发送数据的源,支持响应式的流和背压,至于什么是背压,后面会提到。
  2. Observable
    Observable 和 flowable 类似,是一个数据的发送源,不同的是它不支持背压策略。
  3. Single
    Single 是只支持一个数据发送的数据源。
  4. Completable
    Completable 是一个不携带数据的流,我们一般用来传递信号。
  5. Maybe
    Maybe 可能不携带数据,也可能携带一个数据或者是错误。

创建数据源

这里介绍一个通用的创建数据源的方法,即直接使用 XXXX.create() 方法,比如如果我们想要创建一个Observable,可以用以下的方式:

Observable.create(emitter -> {
   
   
    for (int i = 0;i < 5;i++) {
   
   
        emitter.onNext(i);
    }
});

这是一种最通用的方式,理论上这种方式可以创建所有我们需要的数据源。除此之外还有一些预制的手段:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值