1.subscribeOn:对被观察者发送事件所在线程进行切换
2.observeOn:对观察者响应事件所在线程进行切换
各个线程的概念:
Schedulers.immediate() 当前线程 = 不指定线程 默认
AndroidSchedulers.mainThread() Android主线程 操作UI
Schedulers.newThread() 常规新线程 耗时等操作
Schedulers.io() io操作线程 网络请求、读写文件等io密集型操作
Schedulers.computation() CPU计算操作线程 大量计算操作
例子:
网络请求,在IO线程进行网络请求,在UI线程响应请求,做相应UI操作。
private static final ApiManagerService request = retrofit.create(ApiManagerService.class);
private void login(BaseVo vo){
Observable<BaseDto> observable = request.login(vo);
observable
//在io线程 执行发送网络请求
.subscribeOn(Schedulers.io())
//在Android Ui线程中响应请求(观察者接受事件)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseDto>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseDto baseDto) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
网友评论