继续上一篇之后 MonkeyLei:Retrofit2+Rxjava-Rxjava2.x-篇一-用起来 ,上篇简单的对网络请求做了实践,过程对上下游线程,对线程切换,以及map/flatmap的简单做了了解。然后对RxJava1.x和RxJava2.x的区别那些也做了了解,相关的链接,官方的/网友的都是小萌新忒么搬来的,O(∩_∩)O哈哈~
小萌新上一篇还想这样:就是知识看的太少了,不知道咋整。。。
实际上,群友都告诉我说,你要么再封装一层Observable,当然也可以用操作符map/flatmap这些来做链式处理!所以可能可能要纠正下之前的说法!
map看看呢!
.observeOn(Schedulers.io()) // 还可以指定一个io线程, 用map的形式进行预处理
.map(object: Function, List>{
override fun apply(t: List): List {
Log.e("observable map", "flatMap thread'name=" + Thread.currentThread().name)
return t
}
})
flatMap看看呢? -链表List我们可以做一些特殊,甚至是耗时处理!
.observeOn(Schedulers.io()) // 上一次请求的结果回调中,我们还是拿来在io线程中做预处理
.flatMap(object: Function, ObservableSource>>{
override fun apply(t: List): ObservableSource> {
// 这里是io线程,可以做一些耗时操作,然后返给onNext的UI线程
Log.e("observable", "flatMap thread'name=" + Thread.currentThread().name)
// 原样的给返回去
return Observable.fromArray(t);
}
})
你要注意,这种线程指定与处理的成对出现!map/flatMap处理后,之后你可以切换到UI线程:
.observeOn(AndroidSchedulers.mainThread()) // 请求都完成后,切换到UI线程,将结果进行渲染
然后就可以进行subscribe的一个订阅,此时请求启动!这种逻辑小萌新要注解熟悉,当然可能重要的是看人家如何设计的,思想应该更