observable的.observeOn(AndroidSchedulers.mainThread())方法指定最后的结果处于哪个线程中,是通过handler发送消息到主线中的MainLooper中。为Message的callback设置对象。在handler的dispatchMessage方法中会进行拦截,不会调用handler 的handleMessage方法。
流程图
以一下简单示例看下执行过程
Observable.just("")
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d){
}
@Override
public void onNext(String s){
}
@Override
public void onError(Throwable e){
}
@Override
public void onComplete(){
}
});
复制代码
1, 创建ObservableObserveOn对上层的onservable进行包装,并保存传过来的主线程的Scheduler
public final Observable observeOn(Scheduler scheduler){
return observeOn(scheduler, false, bufferSize());
}
public final Observable observeOn(Scheduler scheduler, boolean delayError, int bufferSize){
ObjectHelper.requireNonNull(scheduler, "scheduler is null");
ObjectHelper.verifyPositive(buff