Flow(Kotlin 原生)
- 基于 Kotlin 协程
- 原生支持背压(上游生产数据的速度大于下游处理速度时,下游的
emit自动挂起 suspend,等待下游处理完毕) - 线程切换使用
flowOn - 生命周期管理:自动 / 结构化并发(
LifecycleScope/repeatOnLifecycle) - 异常处理:标准的
try-catch - Null 安全:完全支持(Kotlin 类型系统)
RxJava
- 基于观察者模式 + 迭代器模式
- 不支持背压,需要
Flowable - 线程切换使用
subscribeOn/observeOn - 生命周期:手动管理
- 异常处理:
onError - Null 安全:历史上不完全支持(RxJava 2/3 不允许 null)