本篇解析 example-flow-04.kt。正式引入 Flow 概念。
1. 核心概念
Flow 是 Kotlin 协程中处理异步数据流的最佳工具。
特点:
- 非阻塞异步:在
flow { ... }块中可以自由调用挂起函数(如delay)。 - **发射 (Emit)**:使用
emit(value)产出数据。 - **收集 (Collect)**:使用
collect { ... }消费数据。 - 与 Sequence 的区别:
Sequence会阻塞调用线程,而Flow会挂起协程,让出线程执行权(如本例中的launch打印不会被阻塞)。
2. 开发者总结
List:一次性返回全家桶。Sequence:同步、惰性、一个一个给,但会死等。- **
Flow**:异步、惰性、一个一个给,等待时不阻塞。
3. 应用场景
任何涉及连续产出数据的异步任务:
- 网络轮询、数据库查询监控。
- 传感器数据实时更新(如 GPS、计步器)。
- 文件下载进度通知。