Rx介绍
- 基于异步 Event(事件)序列的响应式编程
- 简化异步编程方法,并提供更优雅的数据绑定
Observable - 产生事件
创建序列
Observable.create
Event - 事件
- onNext
- onError
- onCompleted
特征序列
Single
- 它只能发出一个元素,或者一个Error事件
- 场景:网络请求,返回应答或错误
- 创建同Observable相似
- 订阅提供SingleEvent枚举
- success - 产生一个单独的元素
- error 产生一个错误
Completable
- 它只能发出一个completed事件,或者一个Error事件
- 场景:判断任务是否完成
- 创建同Observable相似
- 订阅提供SingleEvent枚举
- completed - 产生完成事件
- error 产生一个错误
Maybe
- 发出一个元素或者一个 completed 事件或者一个 error 事件
- 场景:如果你遇到那种可能需要发出一个元素,又可能不需要发出时,就可以使用 Maybe
Driver
- 不会产生 error 事件
- 一定在 MainScheduler 监听(主线程监听)
1.创建普通序列.asDriver()
2.订阅使用drive
Signal
- 不会产生 error 事件
- 一定在 MainScheduler 监听(主线程监听)
- Driver 会对新观察者回放(重新发送)上一个元素,而 Signal 不会对新观察者回放上一个元素
ControlEvent
- 不会产生 error 事件
- 一定在 MainScheduler 订阅(主线程订阅)
- 一定在 MainScheduler 监听(主线程监听)
Subjects - 订阅 + 响应事件
PublishSubject
- 不需要初始值创建
- 只能收到订阅后的Event
BehaviorSubject
- 需要一个默认值创建
- 能收到订阅后上一个Event,之后新的Event正常
ReplaySubject
- 在创建时候需要设置一个 bufferSize,表示它对于它发送过的 event 的缓存个数
BehaviorRelay替代Variable
- 它的本质其实也是对 BehaviorSubject 的封装,所以它也必须要通过一个默认的初始值进行创建
- BehaviorRelay 有一个 value 属性,我们通过这个属性可以获取最新值。而通过它的 accept() 方法可以对值进行修改