do系列
- doOnEach : Observable每发射一项数据就会调用它一次。如果传入的是Observable参数,那么它的所有方法也会调用。就好像它订阅了原始的Observable一样。
- doOnNext : 在下游onNext之前注册一个动作,然后回调动作里面的方法
- doOnComplete 在下游OnComplete之前注册一个动作,然后回调动作里面的方法
- doOnError : 在下游OnError之前注册一个动作,然后回调动作里面的方法
- doOnTerminate : 在下游OnComplete之前注册一个动作,然后回调动作里面的方法
- doAfterTerminate : 在下游OnComplete之后注册一个动作,然后回调动作里面的方法
- doAfterNext : 在下游onNext之后注册一个动作,然后回调动作里面的方法
- doFinally : 几乎与doAfterTerminate一样,但是doFinally会在下游取消订阅时注册一个动作,然后回调动作里面的方法,而doAfterTerminate在下游取消订阅时不会注册动作。
- doOnLifecycle : 为的生命周期事件调用适当的onXXX方法(在所有观察者之间共享)顺序(订阅、取消、请求)。实际上doOnDispose ,doOnSubscribe 内部就是调用此方法。
- doOnDispose : 在下游取消订阅时注册一个动作,然后回调动作里面的方法
- doOnSubscribe : 在下游OnSubscribe之前注册一个动作,然后回调动作里面的方法
delay
延迟一段指定的时间再发射Observable的数据。很好理解,不做代码示例,放个示意图。
materialize/dematerialize
materialize将数据项和事件通知都当做数据项发射;dematerialize刚好相反,将数据项当作事件发射出去。用得很少,了解不深
timeInterval
将发射数据的Observable转换为发射那些数据发射时间间隔的Observable。
subscribeOn/observeOn
rxjava里的调度器。分别为订阅调度器,观察调度器;作用于订阅者与观察者。
@NonNull
static final Scheduler SINGLE; 线程单例,所有的任务都在这一个线程中执行
@NonNull
static final Scheduler COMPUTATION; 常用于一些cpu密集的操作
@NonNull
static final Scheduler IO; 常用于IO密集型的操作,如读写文件,查询数据库,访问网络等
@NonNull
static final Scheduler TRAMPOLINE; 几乎没怎么用过,不太了解
@NonNull
static final Scheduler NEW_THREAD; 在每执行一个任务时都创建一个新的线程,与io相同,但是效率要更低
AndroidSchedulers.mainThread() : android下特有,在ui线程执行,观察调度通常使用此方式来调度
timeout
如果Observable过了一个指定的时长仍没有发射数据,它就会发一个错误通知。看下简单例子。
Observable.just("111")
.delay(5000, TimeUnit.MILLISECONDS)
.timeout(2000, TimeUnit.MILLISECONDS)
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d("timeout", "onSubscribe: ");
}
@Override
public void onNext(String s) {
Log.d("timeout", "onNext: ");
}
@Override
public void onError(Throwable e) {
Log.d("timeout", "onError: ");
}
@Override
public void onComplete() {
Log.d("timeout", "onComplete: ");
}
});
延迟5秒再发射数据,timeout时长为2秒。输出结果:
04-26 16:58:18.543 ******** D/timeout: onSubscribe: 04-26 16:58:20.553 ******** D/timeout: onError:
to系列
将Observable转换为另一个对象或数据结构。
- Future<T> toFuture 转换成 Future
- Single<List<T>> toList 转换成list
- Single<Map<K, T>> toMap (Function f) 转换成 map
- Single<Map<K, Collection<T>>> toMultimap (Function f) 转换成map
- Single<List<T>> toSortedList 转换成一定顺序排列的list