android rxjava 多线程,Rxjava(4) 线程切换 - AndroidSchedulers.mainThread()

本文详细介绍了RxJava如何通过`observeOn(AndroidSchedulers.mainThread())`将 observable 的操作放到主线程中执行。从源码层面剖析了从创建`AndroidSchedulers.mainThread()`到最终在主线程中执行`onNext`的完整流程,涉及`HandlerScheduler`、`Worker`和`Scheduler`等关键概念。
摘要由CSDN通过智能技术生成

observable的.observeOn(AndroidSchedulers.mainThread())方法指定最后的结果处于哪个线程中,是通过handler发送消息到主线中的MainLooper中。为Message的callback设置对象。在handler的dispatchMessage方法中会进行拦截,不会调用handler 的handleMessage方法。

流程图e92004cf62c1c9d75ccd258df509a0ff.png

以一下简单示例看下执行过程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值