文档链接

线程调度

链接

  • subscribeOn 设置� Observable 和 doOnSubscribe 所在的线程
  • observeOn 设置之后操作所在的线程

image.png
注:上图重点在箭头

.doOnSubscribe{}

后设置的方法体会先执行,所在线程可由紧跟在后的 .subscribeOn() 操控

.subscribeOn()

设置� Observable 和 doOnSubscribe 所在的线程。对于 Observable 只有第一个有效,对于 doOnSubscribe 只有之后紧跟的第一个有效

.observeOn()

设置之后操作所在的线程

测试示例

  1. private fun onInit() {
  2. Observable.just(1).subscribeOn(Schedulers.io()) // subscribeOn
  3. .map {
  4. Log.i(TAG, "map-1:" + Thread.currentThread().name)
  5. }
  6. .observeOn(Schedulers.newThread())
  7. .map {
  8. Log.i(TAG, "map-2:" + Thread.currentThread().name)
  9. }
  10. .observeOn(Schedulers.io())
  11. .map {
  12. Log.i(TAG, "map-3:" + Thread.currentThread().name)
  13. }
  14. .doOnSubscribe {
  15. Log.i(TAG, "map-0:" + Thread.currentThread().name)
  16. }
  17. .subscribeOn(Schedulers.computation())
  18. .doOnSubscribe {
  19. Log.i(TAG, "map-00:" + Thread.currentThread().name)
  20. }
  21. .subscribeOn(Schedulers.newThread())
  22. .observeOn(AndroidSchedulers.mainThread())
  23. .subscribe {
  24. Log.i(TAG, "subscribe:" + Thread.currentThread().name)
  25. }
  26. }

操作符

链接

map

image.png

flatmap

image.png