Flow 基础:04. 什么是异步流 (Flow)

本篇解析 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、计步器)。
  • 文件下载进度通知。
,