-
定义: RxJava是基于事件流,实现异步操作的库。
-
作用:类似AsyncTask,Handler
-
特点:基于事件流的链式调用,逻辑简介,实现优雅,使用简单
-
RxJava中的4个角色:
例如:开灯
角色 | 作用 | 类比 |
---|---|---|
被观察者(Observable) | 产生事件 | 开关 |
观察者(Observer) | 接收事件,并给出响应动作 | 灯 |
订阅(Subscribe) | 连接 被观察者 & 观察者 | 电线 |
事件(Event) | 被观察者 & 观察者 沟通的载体 | 开/关灯动作 |
步骤详解
- 创建被观察者生产事件,即开灯
- 创建观察者响应事件,灯亮
- 通过订阅连接观察者和被观察者
//1.创建被观察者observable对象
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
//复写subscribe方法定义需要发送的事件
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("开灯");
e.onComplete();
}
});
//2.创建观察者
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "开始采用subscribe连接");
}
@Override
public void onNext(String value) {
Log.d(TAG, "接受到 【" + value + "】命令" );
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "对Error事件作出响应");
}
@Override
public void onComplete() {
Log.d(TAG, "完成");
}
};
//3.订阅
observable.subscribe(observer);
输出日志:
开始采用subscribe连接
接受到 【开灯】命令
完成