三默网为您带来有关“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
 只能有一个观察者。