RxJava 使用及思想1
https://blog.csdn.net/qq_44076155/article/details/110775440
RxJava模式与原理2
https://blog.csdn.net/qq_44076155/article/details/110775641
RxJava线程切换与自定义操作符3
https://blog.csdn.net/qq_44076155/article/details/110775977
Rx 思维:响应式编程
生活中的例子:
起点(分发事件(PATH):我饿了)----------下楼-------去餐厅--------点餐----------> 终点(吃饭 消费事件)
程序中的例子:
起点(分发事件:点击登录)----------登录API-------请求服务器--------获取响应码----------> 终点(更新UI登录成功 消费事件)
Rx思维,从一个点(生产事件,需要处理的事件,对象)开始,中间可以使用各种操作符不断对这个点进行处理操作,进行完所有操作后到达终点进行回收(消费事件),中间没有阻断
一环扣一环,每次都是获得到上一步的数据后再进行操作
如图则是从一个被观察者分发一个PATH事件开始,中间有三部获取到图片,给图片加水印,打印日志,最后由订阅的观察者来消费此事件
生产过程是一条连续不断的链,在Rxjava表现为一系列的链式调用,中间各个模块形成一个一个卡片,又称为卡片式编程
Rxjava执行流程不像传统框架的线性执行,它呈一个U型执行
上图的应用场景实际的执行流程为
1.Observer观察者进行订阅,执行onSubscribe表示已经订阅成功,执行第一步
2.Observable被观察者被订阅后开始分发事件
3.按顺序分别对该事件进行不同的处理操作
4.第四步OnNext观察者拿到事件
5.OnComplet所有都执行完成
Rxjava ,Retrofit,okhttp三者的关系
Retrofit是一个管理者,用来统一协调,包括gson,rxjava,okhttp,
Okhttp才是真正来进行网络请求的框架
Rxjava进行异步网络请求和处理数据
创建了一个retrofit对象,添加gson,rxjava工具
View防抖 RxBinding
可以用于view控件防抖,设置多少秒内只会响应一次
下图为一个先获取到总数据API然后根据总数据来获取Item数据的一个网络嵌套场景
操作符 flatMap
接受一个事件,操作完后自己可以分发出多个事件,而对于事件流向观察者后,会终止此次事件,因此能多进行操作
clicks()进行事件监听,不用再去setOnclickListener,进行了防抖操作
每一个步过程的数据都是由上一步的返回数据来决定,再次引证了响应式的这种思维
Observable.fromIterable类似于迭代器模式,将总数据Bean变成多个ItemBean分发出去,从而避免了网络嵌套
切换线程的方式
给上面切换线程
给下面切换线程
doOnnext
简单理解就是消费事件但是数据还会继续流下去并且不会改变数据源类型,而终点的观察者会终结数据流