本文共 3006 字,大约阅读时间需要 10 分钟。
上期简单讲了Rxjava的入门,方便大家认识Rxjava,这期带大家了解Rxjava,认识Rxjava的更多特性
Rxjava操作符就是各种方法,每种方法能够帮助我们处理一种情况,Rxjava的强大也就在于这些方法的使用。下面大家认识一下几个比较常用的操作符(方法)
这是最简单操作符,用于创建一个Observable(被观察者),该方法在上一期中已经讲了,忘了的同学请点击查看,原理图如下:
这个操作符的作用是 将一个Iterable, 一个Future, 或者一个数组,内部通过代理的方式转换成一个Observable,并且一次发射到观察者(Observer、Subscription)中的回调中!如下例:
Observable.from(files) .flatMap(new Func1>() { @Override public Observable call(File file) { return Observable.from(file.listFiles()); } })
将一个或多个对象转换成发射这个或这些对象的一个Observable。
当一个对象的时候的流程图如下:当多个对象的时候流程图如下:
创建的Observable会发射到观察者中去,如果多个对象会依次发射,图中表现很明显。
使用方法如下:Observable.just(file1, file2...) .flatMap(new Func1>() { @Override public Observable call(File file) { return Observable.from(file.listFiles()); } })
最多支持10个参数,使用者可以在源码中查看
Observable observable1 = Observable.empty();//直接调用onCompleted。 Observable observable2 = Observable.error(new RuntimeException());//直接调用onError,常用于自定义异常 Observable observable3 = Observable.never();//什么都不做
merge:将多个Observable合并为一个。merge不是按照添加顺序连接,而是按照时间线来连接。其中mergeDelayError将异常延迟到其它没有错误的Observable发送完毕后才发射。而merge则是一遇到异常将停止发射数据,发送onError通知。
Observableobservable1=Observable.just(1,2,3,4);Observable observable2=Observable.just(4,5,6); Observable.zip(observable1, observable2, new Func2 () { @Override public String call(Integer item1, Integer item2) { return item1+"and"+item2; } }).subscribe(item->Log.d("JG",item)); //1and4,2and5,3and6
Observableobservable1=Observable.just(1,2,3,4); Observable observable2=Observable.just(4,5,6); Observable.concat(observable1,observable2) .subscribe(item->Log.d("JG",item.toString()));//1,2,3,4,4,5,6
Observable.just(1,2,3,4,5) .startWith(6,7,8) .subscribe(item->Log.d("JG",item.toString()));//6,7,8,1,2,3,4,5
Observable.just(3,4,5,6) .filter(new Func1() { @Override public Boolean call(Integer integer) { return integer>0; } }).subscribe(item->Log.d("JG",item.toString())); //5,6
Observable.just(3,4,5,6,3,3,4,9) .distinct() .subscribe(item->Log.d("JG",item.toString())); //3,4,5,6,9
更多的操作符可以去官网查看文档:
其实,读懂上面的几个操作符,熟悉上面的图片上的流程基本能理解Rxjava的操作符。这些都只是简单了解,下期我们为大家介绍Rxjava核心的部分—–异步!欢迎关注公众号:码老板