Kotlin Flow 响应式编程完全指南
📚 30 章
完整版
01
Flow 初探
什么是响应式编程?Flow 解决了什么问题?与 LiveData / RxJava 对比
02
Flow 基础概念
冷流 vs 热流,三种构建方式:flowOf、asFlow、flow{}
03
发射与收集
emit() 与 collect() 机制,背压问题初探
04
Flow 的上下文
flowOn 操作符,指定发射数据的协程上下文
05
取消与超时
协程取消对 Flow 的影响,withTimeout 与 Flow 结合
06
异常处理
catch 操作符,声明式与命令式异常处理
07
完成回调
onCompletion 操作符,监听 Flow 结束状态
08
转换操作符 (上)
map、filter、transform 的用法与区别
09
转换操作符 (下)
flatMapConcat、flatMapMerge、flatMapLatest 实战
10
集合操作
reduce、fold、count、first、single 终端操作符
11
缓冲与合并
buffer、conflate、collectLatest 解决背压
12
防抖与节流
debounce、sample 操作符在搜索框中的应用
13
组合操作
zip 与 combine 合并多个 Flow 的异同
14
折叠与展开
scan 操作符实现累加器,flatMapConcat 展开
15
StateFlow 详解
StateFlow / MutableStateFlow,替代 LiveData 最佳实践
16
SharedFlow 详解
SharedFlow / MutableSharedFlow,replay 与 extraBufferCapacity
17
StateFlow vs SharedFlow
何时用 StateFlow?何时用 SharedFlow?对比
18
Flow 在 ViewModel 中
stateIn、shareIn 操作符将冷流转热流
19
Room 数据库中的应用
Room 原生 Flow 支持,监听数据变化
20
Retrofit 网络请求
用 Flow 封装网络请求,处理 loading / error 状态
21
DataStore 中的应用
替代 SharedPreferences,键值对存储
22
WorkManager 结合
用 Flow 监听后台任务状态
23
Flow 的测试
使用 Turbine 库测试 Flow 发射与收集
24
Flow 的调试
catch、onEach 打印日志,协程调试工具
25
Flow 与 Channel 关系
Channel 作为底层实现,produceIn / consumeAsFlow
26
背压策略详解
BUFFER、DROP_OLDEST、DROP_LATEST、SUSPEND
27
冷流特性深入
为什么冷流每次收集重新执行?如何复用?
28
热流实现原理
SharedFlow 缓存与订阅,StateFlow 粘性特性
29
Flow 与协程深度结合
flowScope、coroutineScope 在 Flow 构建中的作用
30
实战项目:MVVM 搜索
防抖、网络请求、状态管理,完整架构