线程调度
subscribeOn
设置� Observable 和 doOnSubscribe 所在的线程observeOn
设置之后操作所在的线程
注:上图重点在箭头
.doOnSubscribe{}
后设置的方法体会先执行,所在线程可由紧跟在后的 .subscribeOn()
操控
.subscribeOn()
设置� Observable 和 doOnSubscribe 所在的线程。对于 Observable 只有第一个有效,对于 doOnSubscribe 只有之后紧跟的第一个有效
.observeOn()
设置之后操作所在的线程
测试示例
private fun onInit() {
Observable.just(1).subscribeOn(Schedulers.io()) // subscribeOn
.map {
Log.i(TAG, "map-1:" + Thread.currentThread().name)
}
.observeOn(Schedulers.newThread())
.map {
Log.i(TAG, "map-2:" + Thread.currentThread().name)
}
.observeOn(Schedulers.io())
.map {
Log.i(TAG, "map-3:" + Thread.currentThread().name)
}
.doOnSubscribe {
Log.i(TAG, "map-0:" + Thread.currentThread().name)
}
.subscribeOn(Schedulers.computation())
.doOnSubscribe {
Log.i(TAG, "map-00:" + Thread.currentThread().name)
}
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
Log.i(TAG, "subscribe:" + Thread.currentThread().name)
}
}