渐进式编程课
KMP 目录
第 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 不重复启动。

与上一课的联系

上一课把订阅数量转换为启停信号;本课过滤重复信号。