一、RxJava入门资料
1.1RxJava定义:
RxJava是一个基于事件流、实现异步操作的库。
1.2RxJava作用:
实现异步操作
类似于Android中的AsyncTask、Handler作用
1.3RxJava特点:
由于RxJava的使用方式是:基于事件流的链式调用,所以使得RxJava:
- 逻辑简洁
- 使用优雅
- 使用简单
更重要的是,随着程序逻辑的复杂性提高,它依然能够保持简介&优雅。
二、RxJava原理
2.1生活例子引入:
我用一个生活例子引入&讲解RxJava原理:顾客到饭店吃饭:
![](https://img.haomeiwen.com/i11690108/c942289ec1bde940.png)
![](https://img.haomeiwen.com/i11690108/0f38ca67138e0391.png)
2.2RxJava原理基于一种扩展的观察者模式:
角色 | 作用 | 类比 |
---|---|---|
被观察者(Observalbe) | 产生事件 | 顾客 |
观察者(Observer) | 接收事件,并给出响应动作 | 厨房 |
订阅(Subscribe) | 连接被观察者&观察者 | 服务员 |
事件(Event) | 被观察者&观察者沟通的载体 | 菜式 |
2.3具体原理
-
结合上述顾客到饭店吃饭的生活例子理解:
示意图
流程图
即RxJava原理可总结为:被观察者(Observable)通过订阅(Subscribe)按顺序发送事件给观察者(Observer),观察者(Observer)按顺序接收事件&作出对应的相应动作,具体如下图:
![](https://img.haomeiwen.com/i11690108/9dadda98add1d6b1.png)
至此:RxJava原理讲解完毕。
三、RxJava基本使用:
RxJava的使用方式有两种:
- 1.分步骤实现:该方法主要为了深入说明RxJava的原理&使用;
- 2.基于事件流的链式调用。
3.1方式1:分步骤实现
3.1.1使用步骤
![](https://img.haomeiwen.com/i11690108/f42ad24f46acd15d.png)
3.1.2步骤详解
步骤1:创建被观察者(Observable)&生产事件
- 即顾客入饭店 - 坐下餐桌 - 点菜
- 具体实现
//1.每1s发送一个数据,从0开始,递增1,
Observable.interval(1, TimeUnit.SECONDS)
//2.通过takeUnit的Predicate传入判断条件
.takeUntil(new Predicate<Long>() {
@Override
public boolean test(Long aLong) throws Exception {
//返回true时,就停止发送事件
return (aLong > 3);
}
}).subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long aLong) {
Log.d(TAG, "onNext: 发送了事件 " + aLong);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
步骤二:创建观察者(Observer)并定义响应事件的行为
- 即 厨房 -确定对应菜式
-
发生事件类型包括:next事件、Complete事件、Error事件,具体如下:
示意图
步骤三:通过订阅(Subscribe)连接观察者和被观察者
Obervable.subscribe(Observer);
demo下载地址:
https://github.com/cWX411904/RxJavaDemo
网友评论