Android 学习笔记(5)之RxJava解析

1,观察者模式
创建被观察者(Observable)
创建观察者(Observer)
订阅关联(subcribe())
4个角色
抽象被观察者:定义添加,删除观察者的功能方法,(注册/解绑) 通知观察者方法
抽象观察者:定义收到消息后处理什么事情的方法
具体被观察者/观察者:抽象的实现。
自定义观察者模式的话,被观察者需要持有观察者列表,通知方法等。
JDK观察者里面实现需要注意,被观察者发送消息需要setChange(),改变状态。
RxJava里面被观察者创建后里面是创建了发射器,
发布订阅模式区别,发送方接收方隔离,通过管道方式拿消息
2,Flowable (解决背压问题)
背压就是数据发送速度大于接收处理速度,数据积存再缓存里,不能被回收
可以控制数据源发送的速度。
与Observable区别,创建需要传入背压策略,5种 ERROR,报错  
观察者抛出异常并终止接收事件,但不会影响被观察者继续发送事件。
BUFF 性能低,加了buff处理,再发送至观察者  onBackpressureBuffer同样效果
DROP大于128就丢弃部分数据 onBackpressureDrop 
LATEST,同上,但是能保证接收最后一个数据onBackpressureLaster 
MISSING,没有采用背压,跟Observale一样
缓存池128

s.request(10); //观察者设置接收事件的数量,如果不设置接收不到事件
requested打印的结果就是 剩余可接收的数量

3,Single /Completable/Maybe   通过toxxx转换类型
Single 只发射单个数据或错误事件。
Completable 它从来不发射数据,只处理 onComplete 和 onError 事件。可以看成是Rx的Runnable。andThen配合使用 重载对应5种观察者类型
Maybe  能够发射0或者1个数据,要么成功,要么失败。有点类似于Optional

4,Observable 冷和热
冷: 观察者订阅了,才会开始执行发射数据流的代码
Observable  和 Observer 是一对一的关系
对 Cold Observable 而已,有多个Observer的时候,
它们各自的事件是独立的,
热:不管有没有订阅,都会发送数据
publish操作符转成热的。需要调用  ((ConnectableObservable<Long>) observable).connect();
5,Subject/Processor 既是观察者也是被观察者 Processor支持背压
AsynSubject 接收complete方法之前的最后一条数据
BehaviorSubject 接收被订阅之前的最后一个事件,然后接收订阅之后发送的所有事件
PublishSubject 接收PublishSubject被订阅之后发送的事件
ReplaySubject 接收所有事件,无论何时订阅
SerializedSubject 线程安全,数据放队列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值