RxJava 源码剖析
最简单的Observable.subscribe(Observable)
看一下我们的例子
Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
}
}).subscribe(new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
在这个方法中,我们通过Observable.create()创建一个Observable对象,然后通过subscribe()方法订阅。
Obsevable.create(OnSubscribe)
那么,我们先看一下Observable.create()
的源码
public static <T> Observable<T> create(OnSubscribe<T> f) {
return new Observable<T>(hook.onCreate(f));
}
hook.onCreate(f)
源码
public <T> OnSubscribe<T> onCreate(OnSubscribe<T> f) {
return f;
}
onCreate
中并没有做什么,只是将其传入的参数再返回,感觉好无聊啊,什么都没有做,那么hook
在Observable
中hook
的生命
static final RxJavaObservableExecutionHook hook = RxJavaPlugins.getInstance().getObservableExecutionHook();
可以看到hook
对象是一个静态的final对象,暂时我们无需管他是干什么的。
然后调用了Observable的构造函数并返回,看一下其构造方法
protected Observable(OnSubscribe<T> f) {
this.onSubscribe = f;
}
Observable中就干了一件事情,他将传入的OnSubscribe赋值当前类的字段中保存。
那么我们可以总结Observable.create()就是调用Observable的构造方法,保存传入的Obsu