Flow(Kotlin 原生)

  • 基于 Kotlin 协程
  • 原生支持背压(上游生产数据的速度大于下游处理速度时,下游的 emit 自动挂起 suspend,等待下游处理完毕)
  • 线程切换使用 flowOn
  • 生命周期管理:自动 / 结构化并发(LifecycleScope / repeatOnLifecycle
  • 异常处理:标准的 try-catch
  • Null 安全:完全支持(Kotlin 类型系统)

RxJava

  • 基于观察者模式 + 迭代器模式
  • 不支持背压,需要 Flowable
  • 线程切换使用 subscribeOn / observeOn
  • 生命周期:手动管理
  • 异常处理:onError
  • Null 安全:历史上不完全支持(RxJava 2/3 不允许 null)