1.不加任何线程切换处理:
Observable.just(0)
.doOnNext(n -> {
Log.e("doOnNext", ""+Thread.currentThread()); //main
})
.map(n -> {
Log.e("map", "" + Thread.currentThread()); //main
return n + 1;
})
.subscribe(n -> {
Log.e("subscribe", "" + Thread.currentThread()); //main
});
2.切换到io线程:
Observable.just(0)
.subscribeOn(Schedulers.io()) //在此处切换到io线程
.doOnNext(n -> {
Log.e("doOnNext", ""+Thread.currentThread()); //io
})
.map(n -> {
Log.e("map", "" + Thread.currentThread()); //io
return n + 1;
})
.subscribe(n -> {
Log.e("subscribe", "" + Thread.currentThread()); //io
});
Observable.just(0)
.doOnNext(n -> {
Log.e("doOnNext", ""+Thread.currentThread()); //io(RxCachedThreadScheduler-1,5,main)
})
.map(n -> {
Log.e("map", "" + Thread.currentThread()); //io
return n + 1;
})
.subscribeOn(Schedulers.io()) //在此处切换到io线程
.subscribe(n -> {
Log.e("subscribe", "" + Thread.currentThread()); //io
});
可见subscribeOn的效果与写在哪里没有关系