RxJava
是一个反应性扩展的Java VM实现:一个库,用于使用可观察序列组合异步和基于事件的程序Rxjava
因为其基于事件流的链式调用、逻辑简洁 & 使用简单的特色,深受各大 Android开发者的欢迎。Rxjava
原理 基于 一种扩展的观察者模式被观察者 (Observable) 经过 订阅(Subscribe) 按顺序发送事件 给观察者 (Observer), 观察者(Observer) 按顺序接收事件 以及做出对应的响应动做java
implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
复制代码
// 1. 建立被观察者 Observable 对象
Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
// 2. 在复写的subscribe()里定义须要发送的事件
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
// 经过 ObservableEmitter类对象产生事件并通知观察者
// ObservableEmitter类介绍
// a. 定义:事件发射器
// b. 做用:定义须要发送的事件 & 向观察者发送事件
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();//事件完成,能够选择继续发送事件
}
});
复制代码
Observer<Integer> observer = new Observer<Integer>() {
// 经过复写对应方法来 响应 被观察者
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "开始链接");
}
// 默认最早调用复写的 onSubscribe()
@Override
public void onNext(Integer value) {
Log.d(TAG, "处理事件"+ value );
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "处理事件"+ value );
}
}
@Override
public void onComplete() {
Log.d(TAG, "事件完成.不在接收任何事件" );
}
}
};
复制代码
observable.subscribe(observer);
复制代码
Observable.create(new ObservableOnSubscribe<Integer>() {
// 1. 建立被观察者 & 生产事件
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();
}
}).subscribe(new Observer<Integer>() {
// 2. 经过经过订阅(subscribe)链接观察者和被观察者
// 3. 建立观察者 & 定义响应事件的行为
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "开始采用subscribe链接");
}
// 默认最早调用复写的 onSubscribe()
@Override
public void onNext(Integer value) {
Log.d(TAG, "处理事件"+ value );
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "处理Error事件,再也不接收事件");
}
@Override
public void onComplete() {
Log.d(TAG, "处理Complete事件,再也不接收事件");
}
});
}
复制代码
// 主要在观察者 Observer中 实现
Observer<Integer> observer = new Observer<Integer>() {
// 1. 定义Disposable类变量
private Disposable mDisposable;
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "开始采用subscribe链接");
// 2. 对Disposable类变量赋值
mDisposable = d;
}
@Override
public void onNext(Integer value) {
Log.d(TAG, "对Next事件"+ value +"做出响应" );
if (value == 2) {
// 设置在接收到第二个事件后切断观察者和被观察者的链接
mDisposable.dispose();
Log.d(TAG, "已经中段了链接:" + mDisposable.isDisposed());
}
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "处理Error事件"); //没法收到Error事件了
}
@Override
public void onComplete() {
Log.d(TAG, "处理Complete事件");//没法收到Complete事件了
}
};
复制代码
Rxjava
原理 基于 一种扩展的观察者模式被观察者 (Observable) 经过 订阅(Subscribe) 按顺序发送事件 给观察者 (Observer), 观察者(Observer) 按顺序接收事件 以及做出对应的响应动做react
至此,Rxjava的基本介绍和使用就完成了,感谢阅读android
Android Rxjava:这是一篇 清晰 & 易懂的Rxjava 入门教程segmentfault
欢迎关注做者darryrzhong,更多干货等你来拿哟.bash
更多精彩文章请关注异步