协程进阶:通道 10. Ticker 计时器 (Ticker Channels)

本篇解析 example-channel-10.kt。学习如何创建一个定时产出信号的通道。

1. 核心概念:ticker()

ticker() 是一个特殊的通道,它会按照固定的时间间隔发送 Unit

核心参数:

  • delayMillis:产出信号的周期(如每 100ms 一发)。
  • initialDelayMillis:启动前的初始延迟。

2. 核心特点:补偿机制

Ticker 通道具有自适应特性。

  • 消费慢时:如果消费者处理慢了,下一次产出的时间会相应缩短,以尽量维持总体的产出频率。
  • 非阻塞:当没有人接收时,它是合并(Conflated)的,不会在后台无限堆积信号。

3. 开发者感悟

ticker 是实现定时任务(如心跳包、UI 刷新、超时检测)的利器。相比于 while(true) { delay(100) }ticker 在高并发环境下具有更好的时间精确度和资源调度能力。在 Android 界面需要每秒更新一次倒计时时,使用 ticker 是最专业且低功耗的方案。

,