create基本使用
create是用来从头开始创建一个Observable的对象,应该调用ObservableEmitter的onNext, onError 和onComplete方法,如下:
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> e) throws Exception {
//Emitter data
}
})
create接收的参数是ObservableOnSubscribe对象,查看源码:
public interface ObservableOnSubscribe<T> {
/**
* Called for each Observer that subscribes.
* @param e the safe emitter instance, never null
* @throws Exception on error
*/
void subscribe(@NonNull ObservableEmitter<T> e) throws Exception;
}
我们再继续分析create方法:
public static <T> Observable<T> create(ObservableOnSubscribe<T> source) {
ObjectHelper.requireNonNull(source, "source is null");
return RxJavaPlugins.onAssembly(new ObservableCreate<T>(source));
}
将传入的ObservableOnSubscribe对象作为参数来生成一个ObservableCreate对象,最后调用RxJavaPlugins类中的onAssembly方法来生成一个Observable对象。
@NonNull
public static <T> Observable<T> onAssembly(@NonNull Observable<T> source) {
Function<? super Observable, ? extends Observable> f = onObservableAssembly;
if (f != null) {
return apply(f, source);
}
return source;
}
通过onAssembly方法可知,直接返回ObservableCreate对象,由此可知ObservableCreate是Observable的子类。如下:
public final <