RxJava3.x入门(五)——功能操作符
一、线程调度操作符
1.subscribeOn()
- 作用:指定被观察者的线程,如果多次调用此方法,只有第一次有效。
代码演示:
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(@NonNull ObservableEmitter<Integer> emitter) throws Throwable {
Log.d(TAG, "threadName:" + Thread.currentThread().getName());
}
})
.subscribeOn(Schedulers.io())
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe: "+d);
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "onNext: "+integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: "+e);
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
代码运行结果:
2.observerOn()
- 作用: 指定观察者的线程,每指定一次就会生效一次。
代码演示:
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(@NonNull ObservableEmitter<Integer> emitter) throws Throwable {
Log.d(TAG, "threadName:" + Thread.currentThread().getName());
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe: "+d);
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "onNext: "+integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: "+e);
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
代码运行结果:
二、延时操作符
1.delay()
- 作用:使得被观察者延迟一段时间在发送事件
其重载方法及其各自参数含义如下:
// 1. 指定延迟时间
// 参数1 = 时间;参数2 = 时间单位
delay