RxJava
定义
> Rxjava是一个<kbd>基于事件流</kbd>、<kbd>实现异步操作</kbd>的库
特点
逻辑简洁
实现优雅
使用简单
原理
RxJava原理基于一种扩展的观察者模式
RxJava的扩展观察者模式分为4个角色
角色 作用 类比 被观察者(Observable) 产生事件 顾客 观察者(Observer) 接收事件&给出对应的动作 厨房 订阅(Subscribe) 连接被观察者&观察者 服务员 事件(Event) 被观察者&观察者沟通的载体 菜式 原理可以总结出一句话
Observable通过Subscribe按顺序发送Event给Observer
Observer按顺序接收Event并作出对应的相应动作
基本使用
分步使用
- 创建Observable生产Event
- 创建Observe,定义响应事件行为
- 通过Subscribe连接Observable和Observer
链式调用
- 实际使用中,使用链式调用
RxJava操作符
详见另外一个文章(单独写一个)
什么时候使用RxJava
网络请求轮询(无条件)
网络请求轮询(有条件)
网络请求嵌套回调
发送网络请求时的差错重试机制
合并数据源&同时展示
获取缓存数据
联合判断
线程操作(切换/调度/控制)
功能防抖
联想搜索请求优化
背压
网络请求轮询(无条件)
客户端隔固定时间主动向服务器发送请求获取信息(pull)(轮询)
RxJava有延时操作符interval()和intervalRange()
例子的场景是:RxJava和Retrofit结合,对某一接口实现无条件轮询,部分步骤略,只展示关键代码
1 | /* |
网络请求轮询(有条件)
客户端隔固定时间主动向服务器发送请求获取信息(pull)(轮询)
根据服务器返回信息停止轮询
RxJava有repeatWhen()
例子的场景是:RxJava和Retrofit结合,对某一接口实现有条件轮询,部分步骤略,只展示关键代码
1 | // 步骤1:创建Retrofit对象 |
网络请求嵌套回调
在第一次请求成功后,再进行第二次回调
RxJava2 中有FlatMap()
例子的场景是:RxJava和Retrofit结合,对两个接口实现网络请求嵌套回调,部分步骤略,只展示关键代码
1 | public class MainActivity extends AppCompatActivity { |