三默网为您带来有关“rxjava2 学习笔记”的文章内容,供您阅读参考。
rxjava2 学习笔记
2023-01-21 19:52:51
特点
- 链式调用
- 线程切换
操作符
- 创建操作符
create(): 创建最简单的事件流
just(): 创建事件流,可发送多个参数的数据流
from(): 创建事件流,可发送不同类型的数据流
defer(): 创建事件流,可缓存可**事件流
range(): 创建事件流,可发送范围内的数据流
repeat(): 创建可重复次数的事件流
interval(): 创建延时重复的事件流
timer(): 创建一次延时的事件流
- 转换操作符
map(): 对数据流的类型进行转换
flatMap(): 对数据流的类型进行包装成另一个数据流 无序
concatMap():对数据流的类型进行包装成另一个数据流 有序
groupby(): 对所有的数据流进行分组
scan(): 对上一轮处理过后的数据流进行函数处理
buffer(): 缓存发射的数据流到一定数量,随后发射出数据流集合
window(): 缓存发射的数据流到一定数量,随后发射出新的事件流
- 过滤操作符
debounce(): 事件流只发射规定范围时间内的数据项
distinct(): 事件流只发射不重复的数据项
elementAt(): 事件流只发射第N个数据项
filter(): 事件流只发射符合规定函数的数据项
first(): 事件流只发射第一个数据项
ignoreElements():忽略事件流的发射,只发射事件流的终止事件
last(): 事件流只发射最后一项数据项
sample(): 事件流对指定的时间间隔进行数据项的采样
skip(): 事件流忽略前N个数据项
skipLast(): 事件流忽略后N个数据项
take(): 事件流只发射前N个数据项
takeLast(): 事件流只发射后N个数据项
- 组合操作符
merge()/concat(): 无序/有序的合并两个数据流
zip(): 两个数据流的数据项合并成一个数据流一同发出
startWith(): 将待合并的数据流放在自身前面一同发出
join(): 将数据流进行排列组合发出,不过数据流都是有时间期限的
combineLatest(): 合并最近发射出的数据项成数据流一同发出
- 错误处理操作符
onErrorReturn(): 当错误发生时,它会忽略onError的回调且会发射一个新的数据项并回调onCompleted()
onErrorResumeNext(): 当错误发生时,它会忽略onError的回调且会发射一个新的事件流并回调onCompleted()
onExceptionResumeNext():当错误发生时,如果onError收到的Throwable不是一个Exception,它会回调onError方法,且不会回调备用的事件流,如果onError收到的Throwable是一个Exception,它会回调备用的事件流进行数据的发射
retry(): 当错误发生时,发射器会重新发射
retryWhen(): 当错误发生时,根据Tharowble类型决定发射器是否重新发射
- 辅助性操作符
delay(): 延迟事件发射的数据项
do(): 监听事件流的生命周期
materialize()/dematerialize():对事件流进行装箱/拆箱
serialize(): 同步事件流的发射
timeInterval():对事件流增加时间间隔
timeout(): 对事件流增加限定时间
timestamp(): 对事件流增加时间戳
using(): 对事件流增加一次性的资源
to(): 对数据流中的数据项进行集合的转换
- 条件和布尔操作符
all(): 对所有数据项进行校验
contains(): 所有数据项是否包含指定数据项
amb(): 多个事件流中,只发射最先发出的事件流
defaultIfEmpty():如果数据流为空则发射默认数据项
sequenceEqual():判断两个数据流是否完全相等
skipUntil(): 当两个事件流发射时,第一个事件流的数据项会等到第二个事件流开始发射时才进行发射
skipWhile(): 当发射的数据流达到某种条件时,才开始发射剩余所有数据项
takeUntil(): 当两个事件流发射时,第一个事件流的数据项会等到第二个事件流开始发射时终止发射
takeWhile(): 当发射的数据流达到某种条件时,才停止发射剩余所有数据项
- 数学运算及聚合操作符
average(): 求所有数据项的平均值
max/min(): 求所有数据项的最大或最小值
sum(): 求所有数据项的总和
reduce(): 对上一轮处理过后的数据流进行函数处理,只返回最后的结果
collect(): 对上一轮处理过后的数据流进行函数处理,可改变原始的数据结构
- 连接操作符
publish(): 将普通的事件流转换成可连接的事件流
connect(): 将可连接的事件流进行连接并发射数据
refCount(): 将可连接的事件流转换成普通的事件流
replay(): 缓存可连接的事件流中的所有数据项
Processor 和 Subject
1、AsyncSubject,BehaviorSubject,ReplaySubject,PublishSubject
2、AsyncProcessor, BehaviorProcessor,ReplayProcessor,PublishProcessor
AsyncProcessor
不论何时订阅,都只发射最后一个数据,如果因为异常而终止,不会释放任何数据,但是会向 Observer 传递一个异常通知。
BehaviorProcessor
发射订阅之前的一个数据和订阅之后的全部数据。如果订阅之前没有值,可以使用默认值。
PublishProcessor
从哪里订阅就从哪里发射数据。
ReplayProcessor
无论何时订阅,都发射所有的数据。
SerializedProcessor
其它 Processor 不要在多线程上发射数据,如果确实要在多线程上使用,用这个 Processor 封装,可以保证在一个时刻只在一个线程上执行。
UnicastProcessor
只能有一个观察者。