form操作符也是调用了create来创建的
Observable部分源码:
public final static <T> Observable<T> from(T[] array) { return from(Arrays.asList(array)); }
public final static <T> Observable<T> from(Iterable<? extends T> iterable) { return create(new OnSubscribeFromIterable<T>(iterable)); }
public final static <T> Observable<T> create(OnSubscribe<T> f) { return new Observable<T>(hook.onCreate(f)); }
from操作符是将其他类型的对象或数据类型转换成Observable,如:
String[] arr={"one","two","three","four","five"}; Observable.from(arr).subscribe(new Subscriber<String>() { @Override public void onCompleted() { LogUtils.d("-------------->onCompleted:"); } @Override public void onError(Throwable e) { LogUtils.d("-------------->onError:" + e); } @Override public void onNext(String s) { LogUtils.d("-------------->onNext:" + s); } });
当然也可以有简化方式,比如你只关心onNext,可以不奇怪,源码中封装了一下:Integer[] arr2={1,2,3,4,5}; Observable.from(arr2).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { } });
同样可以之关心异常或者结束或者同时关注等等
Observable.from(arr2).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { } }, new Action0() {//complete @Override public void call() { } });