协程进阶:通道 02. 关闭与遍历

本篇解析 example-channel-02.kt。学习如何优雅地结束通道通信。

1. 核心操作:close()

当生产者不再发送数据时,应调用 close()

  • 信号传递close() 会向通道发送一个特殊的“结束令牌”。
  • 接收端感知:接收端在处理完缓冲区剩余数据后,会自动感知到通道已关闭并停止等待。

2. 核心语法:for 循环遍历

你可以像遍历 List 一样直接使用 for (y in channel)

  • 自动结束:当通道被 close() 且数据取完后,循环会自动终止。

3. 开发者感悟

close() 是一种契约。它告诉消费者:“货发完了,你可以下班了。”在 Android 中,如果你使用 Channel 传递文件上传进度,上传完成后务必调用 close(),这样 UI 层的监听循环才能正常退出,避免不必要的挂起。

,