第110篇 Flow 与 RxJava 对比:响应式迁移指南

发布时间:2026/10/8 1:44:16
第110篇 Flow 与 RxJava 对比:响应式迁移指南
前面几节把 Flow 的操作符、状态流、生命周期都讲完了,这一节做一次横向对照:Flow 和 RxJava 到底什么关系、能不能互相替代、迁移时哪些地方会踩坑。面试里这题很常见,因为它考的是"你是否理解两者的设计取向",而不是 API 记忆。先把结论放在前面:两者解决的问题高度重叠,但设计取向相反。RxJava 是"响应式流 + 背压策略"体系,核心对象是Flowable(支持背压)与Observable(不支持);Flow 是"协程 + 挂起函数"体系,靠emit天然挂起实现背压,没有BackpressureStrategy枚举。结论有三层:①大部分场景 Flow 可以替代 Rx(网络流、状态流、UI 事件);②Rx 在少数场景仍有优势(observeOn精确到下游、成熟的算子生态、精细的调度控制);③最需要小心的是 Subject/Subject 语义——这是迁移时最容易出错的地方。机制背后的执行路径先看背压机制的根本差别。RxJava 的Flowable需要显式指定策略:Flowable.interval(0, 100, TimeUnit.MILLISECONDS) .onBackpressureBuffer() // 缓冲 .onBackpressureDrop() // 丢弃 .onBa