第 52 课2026.09.11
避免订阅者数量变化但启停状态未变时重复执行命令。
第 52 课:订阅状态去重启停命令
- 日期:2026-09-11
- 课程序号:第 52 课
- 知识点:distinctUntilChanged 与订阅状态
用途
避免订阅者数量变化但启停状态未变时重复执行命令。
核心概念
先把数量映射为是否活跃,再过滤相同布尔值。
最小代码或操作示例
kotlin
shared.subscriptionCount
.map { count -> count > 0 }
.distinctUntilChanged()
.onEach { active -> if (active) start() else stop() }
.launchIn(scope)3~5 分钟练习
模拟订阅数 1→2→0,记录命令。
参考答案
只记录 start、stop,中间的 2 不重复启动。
与上一课的联系
上一课把订阅数量转换为启停信号;本课过滤重复信号。