RxJava 轻知识

213 阅读1分钟

线程调度:

  • subScribeOn:subScribe发生的线程 多次调用只有第一次有效
  • observeOn:订阅者接受线程,每调用一次observerOn,线程切换一次

内置线程Schedulers:

  • io:io操作,用于网络,读写文件等io密集型操作
  • computation:CPU密集型操作,大量计算操作
  • newThread:代表常规新线程
  • mainThread:Android主线程

操作符

  • map:将Observable对象转换为另一个Observable对象。
    • 网络数据解析为例Okhttp3
      1. Observable.create
      2. map操作符集合gson,将Response转为Bean
      3. doOnNext:解析bean,数据库操作
      4. 子线程进行耗时任务,主线程更新ui
      5. subScribe根据请求结果更新UI

image.png

  • concat:不交错的发射多个Observable,只有前一个Observable终止后才订阅下一个
    • 以数据请求为例,先读缓存,缓存没有再网络请求

image.png

  • flatMap:多个网络请求依次依赖
    • 以登录注册为例:通过注册接口注册用户信息后,立马调用自动登录接口即可

image.png

  • zip:数据合并一起发放
    • 把多个Observable数据合并在一个数据源再发射出去 image.png
  • interval:轮训任务

image.png