添加依赖

implementation "io.reactivex.rxjava3:rxjava:3.1.5"

implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'

关于RxJava

RxJava的核心是异步数据流和响应式编程

RxJava适用场景

网络请求。数据库读写,文件读写,定时任务等各种耗时操作都需要通过异步来完成的操作都可以使用RxJava

RxJava几个重要概念

观察者:

Observer,观察事件变化并处理的主要角色。消费者(Consumer)也可以理解成一种特殊的观察者

被观察者:

触发事件并决定什么时候发送事件的主要角色(异常和完成也是一种事件)

Observable. Flowable .Single .Completable Maybe都是被观察者

Flowable是支持背压的一种观察者

Single.Completable.Maye 是简化版的Observable

几种被观察者通过toObservable/toFlowable/toSingle/toCompletable/toMaybe相互转换

订阅(subscribe):

观察者和被观察者建立关联的操作

强大的操作符群

创建操作符

create() 创建一个被观察者

just() 创建一个被观察者,并发送事件,发送的事件不可以超过10个以上

Form 操作符

fromArray()

fromCallable()

fromFuture()

fromIterable()

defer() 这个方法的作用就是直到被观察者被订阅后才会创建被观察者

timer()当到指定事件后就会发送一个OL的值给观察者

interval() 每隔一段时间就会发送一个事件,这个事件是从0开始,不断增1的数字

intervalRange() 可以指定发送事件的开始值和数量,其他与interval()的功能

range()同时发送一定范围的时间序列

rangeLong()作用与range()一样,只是数据类型为long

empty()&never()&error()

empty() :直接发送onConplete事件

never()不发送任何事件

error()发送onError()事件

转换操作符

map()map可以将被观察者发送的数据类型转换成其他的类型

flatMap() 这个方法可以将时间序列中的元素进行整合加工,返回一个新的被观察者

concatMap() concatMap()和flatMap()基本上是一样的,只不过concatMap()转发出来的事件是有序的,而flatMap()是无序的

buffer()从需要发送的事件当中获取一定数量的事件,并将这些事件放到缓冲区当中一并发出

groupBy()将发送的数据进行分组,每个分组都会返回一个被观察者

scan() 将数据以一定的逻辑聚合起来

window()发送指定数量的事件时,就将这些事件分为一组。window 中的count的参数就是代表指定的数量,例如将count指定为2...

组合操作符

concat() 可以将多个观察者组合在一,然后按照之前发送顺序发送事件。需要注意的是,concat()最多只能发送4个事件

concatArray() 与concat()作用一样,不过concatArray()可以发送多于4个被观察者

merge() 这个方法和concat()作用基本一样,只是concat()是串行发送事件,而merge()并行发送事件

功能操作符

subscribeOn() 指定被观察者的线程,要注意的是,如果多次调用此方法,只有第一次有效

observeOn()指定观察者的线程,没指定一次就会生效一次

过滤操作符

filter() 通过一定逻辑来过滤别观察者发送的事件,如果返回true,则会发送事件,否则不会发送

Observable 生产者,用来生产数据,只会在订阅之后才会生产

Observer 订阅者,用来接受生产者生产的数据

Disposable 订阅之后的管理者,可以用来中断生产,释放资源

线程切换:rxjava的重要,用来处理异步任务

subscribeOn:表示将生产者置于哪个调度器(线程)

observeOn:表示将消费者置于哪个调度器(线程)

数据转换:

map

flatMap

filter

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: