系列文章:
友好 RxJava2.x 源码解析(一)基本订阅流程
友好 RxJava2.x 源码解析(二)线程切换
友好 RxJava2.x 源码解析(三)zip 源码分析
本文掘金地址:友好 RxJava2.x 源码解析(一)基本订阅流程
本文基于 RxJava 2.1.3
前言
本文基于读者会使用 RxJava 2.x 而讲解,基本原理不涉及,示例只纯粹为示例而示例。
示例代码
示例源码:
Observable
.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("1");
emitter.onNext("2");
emitter.onNext("3");
emitter.onComplete();
}
})
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.e("TAG", "onSubscribe(): ");
}
@Override
public void onNext(String s) {
Log.e("TAG", "onNext(): " + s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
Log.e("TAG", "onComplete(): ");
}
});
输出结果:
E/TAG: onSubscribe():
E/TAG: onNext(): 1
E/TAG: onNext(): 2
E/TAG: onNext(): 3
E/TAG: onComplete():
订阅流程解析
有过一定基础的读者知道 subscribe()
方法是 Observable 和 Observer 的连接点,所以首先戳进 subscribe(Observer observer)
中,可以发现该方法是 Observable 类的方法,传入了一个 Observer 对象,那首先我们需要弄明白这里的 Observable 和 Observer 分别是什么,好在这里我们可以直接看到 Ob