【发布时间】:2020-05-19 11:19:00
【问题描述】:
我想在主线程上执行 doOnSubscribe 块。 我正在尝试这个:
fun test(){
Single
.fromCallable {
print(Thread.currentThread())
getCachedProfile()
}
.observeOn(AndroidSchedulers.mainThread())
.flatMap {
print(Thread.currentThread())
api
.getProfile()
.doOnSubscribe {
print(Thread.currentThread())
}
.observeOn(Schedulers.io())
.map {
print(Thread.currentThread())
it.profile
}
.map { it.id }
.flatMap { photoId ->
print(Thread.currentThread())
api
.getPhotos(photoId)
.map { it.toDomain() }
}
}.subscribeOn(Schedulers.io())
.observeOn(AndroidSchdulers.mainThread())
}
doOnSubscribe 在主线程上运行,但 .getProfile() 也在 UI 线程上运行,我得到一个错误 NetworkOnMainThreadException。如何设置调度器,使doOnSubscribe在主线程上执行,getProfile()在IO线程上运行
【问题讨论】:
标签: android networkonmainthread