前一篇文章分析了RxJava中subscribeOn()这个操作符,今天,继续来分析另一个使用非常频繁的操作符—observeOn()(基于RxJava2)。
1. 举个栗子
首先,还是以一个栗子来看看observeOn()这个操作符到底干了些什么事情:
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("1");
Thread.sleep(1000);
e.onNext("2");
Thread.sleep(1000);
e.onComplete();
}
})
.map(new Function<String, Integer>() {
@Override
public Integer apply(String s) throws Exception {
Log.e("TAG", "map1--thread=" + Thread.currentThread().getName() + "-s:" + s);
return Integer.valueOf(s);
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.map(new Function<Integer, Long>() {
@Override
public Long apply(Integer integer) throws Exception {
Log.e("TAG", "map2--thread=" + Thread.currentThread().getName() + "-integer:" + integer);
return Long.valueOf(integer);
}
})
.observeOn(Schedulers.io())
.map(new Function<Long, String>() {
@Override
public String apply(Long aLo