Create
操作符从头开始创建一个Observable,给这个操作符传递一个接受观察者作为参数的函数,编写这个函数让它的行为表现为一个Observable--恰当的调用观察者的onNext,onError和onCompleted方法。
一个形式正确的有限Observable必须尝试调用观察者的onCompleted正好一次或者它的onError正好一次,而且此后不能再调用观察者的任何其它方法
上面这些来自官方文档
我们以一个例子来查看他的执行
Observable<String> myObservable = Observable.create(
new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> sub) {
sub.onNext("Hello, world!");
sub.onCompleted();
}
}
);
代码中可以看出,创建一个Observable需要一个实现了OnSubscribe接口的对象,我们先看一下类图
可以看到OnSubscribe中有一个call方法,我们实现OnSubscribe需要实现这个方法
回到create
public static <T> Observable<T> create(OnSubscribe<T> f) {
return new Observable<T>(RxJavaHooks.onCreate(f));
}
我们忽略Hooks相关,默认RxJavaHooks.onCreate(f)返回的就是f
protected Observable(OnSubscribe<T> f) {
this.onSubscribe = f;
}
所以这里把f保存在了onSubscribe,create函数就完成了。