rxjava真实案例演示和Operator操作符变换原理

苹果汁流水线:
1,将苹果一个一个放上履带。也就是new了一个包含苹果对象的集合,在subscribe方法中for循环这个【苹果集合一个一个的发出去。
2,可以在subscribe的onNext中一个一个的接受到。

什么是操作符:
获取到发射的数据进行处理,得到想要的结果之后再发射出去。

 Rxjava2操作符:
1,Function接口
2,AbstractObservableWithUpstream抽象类。
其实操作符就相当于我们现实生活中的寄信操作,需要把信给邮局,通过邮局发出去。操作符就是邮局。

操作符变换的原理
lift操作:源码分析
1,接收原Onsubscribe和当前的Operator。
2,创建一个新的Onsubscribe并返回新的Onsubscribe
3,用新的Subscriber包裹就的Subscriber
4,在新的Subscriber里昨晚变换再传给旧的Sunscriber
类似于代理机制,类似于现实生活中的寄快递,快递员的操作就是lift的操作。

rxjava2的操作符源码分析:
AbstractObservableWithUpstream说明
1,继承此类
2,利用其subscribeActual方法
3,用原Observable去subscribe变换后的Observer
rxjava2中map操作符的原理和rxjava1的map操作符实现原理是一样的,只不过是写法上面有区别。

Operator操作符
Operator接口:(rxjava1)
1,是操作符的抽象接口
2,是各操作符实现Operator接口用于处理具体的变换,并且调用lift操作符

eg:map操作符
1,最基本最简单的操作符。
2,顾名思义,用于做映射。
MapOperator中做了什么:
因为操作符就是为了做变换的,map也不例外,在map中实际上是调用了lift方法,lift方法的参数传入了Operator接口,Operator是实现了func1接口的,func1中实现了call方法。
调用的call方法返回的是一个MapReceiver对象。
MapReceiver继承了Receiver,重写了onComplated()  onError()  onReceiver()方法。
onReceiver()中调用了call方法,将传递过来的数据做处理再传回去。

rxjava2的操作符实战:
无背压版本
先说一个关键类:CallerWithUpstream
1,一个抽象类
2,有callActual方法
3,实现操作符需实现此方法
实现原理:在map方法中返回的是一个CallerMap对象,CallerMap继承了CallerWithUpstream,其中通过callActual方法调用了call方法,调用了做变换的callee方法。。

CallerOperator接口
1,在callActual中做变换
2,可用于扩展操作符

有背压版本的操作符实战:
TelephonerWithUpstream
1,一个抽象类
2,有callActual方法
3,实现操作符需实现此方法

TelephonerOperator接口
1,在callActual中做变换
2,可用于扩展操作符

操作符提现的是响应式编程思想的变换传播,变换之后还能向下传播
所谓的操作符去变换数据或者处理数据,就是拿到当前的数据去做处理,之后因为持有原有对象,直接通过原有对象去调用处理之后的结果,达到了变换的目的












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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值