本篇解析 example-channel-10.kt。学习如何创建一个定时产出信号的通道。
1. 核心概念:ticker()
ticker() 是一个特殊的通道,它会按照固定的时间间隔发送 Unit。
核心参数:
- delayMillis:产出信号的周期(如每 100ms 一发)。
- initialDelayMillis:启动前的初始延迟。
2. 核心特点:补偿机制
Ticker 通道具有自适应特性。
- 消费慢时:如果消费者处理慢了,下一次产出的时间会相应缩短,以尽量维持总体的产出频率。
- 非阻塞:当没有人接收时,它是合并(Conflated)的,不会在后台无限堆积信号。
3. 开发者感悟
ticker 是实现定时任务(如心跳包、UI 刷新、超时检测)的利器。相比于 while(true) { delay(100) },ticker 在高并发环境下具有更好的时间精确度和资源调度能力。在 Android 界面需要每秒更新一次倒计时时,使用 ticker 是最专业且低功耗的方案。