渐进式编程课
KMP 目录
第 54 课2026.09.15

订阅停止后按策略清除共享流的旧回放值。

第 54 课:replayExpirationMillis清理回放

  • 日期:2026-09-15
  • 课程序号:第 54 课
  • 知识点:WhileSubscribed 的 replayExpirationMillis

用途

订阅停止后按策略清除共享流的旧回放值。

核心概念

stopTimeoutMillis 控制何时停上游;replayExpirationMillis 控制停止后保留 replay 缓存多久。

最小代码或操作示例

kotlin
val shared = source.shareIn(
  scope,
  SharingStarted.WhileSubscribed(
    stopTimeoutMillis = 0,
    replayExpirationMillis = 0
  ),
  replay = 1
)

3~5 分钟练习

把回放保留时间改为 5 秒。

参考答案

设置 replayExpirationMillis = 5_000。

与上一课的联系

继承上一课的重新订阅测试;本课只控制停止后的回放寿命;下一课可用虚拟时间验证清理边界。

时效校验

时效校验:2026-09-15(kotlinx.coroutines 1.10.2 当前 API)。已打开并核对下列官方文档;示例未使用已废弃接口。

官方参考