作用:用于定义在 shareIn 和 stateIn 操作符中启动和停止共享协程的策略。
这个函数接口提供了一组内置的策略
1. Eagerly
val Eagerly: SharingStarted
在这种共享模式下,共享立即开始,并且永不停止。即使没有订阅者,共享也会一直保持活跃。
2. Lazily
val Lazily: SharingStarted
在这种共享模式下,共享在第一个订阅者出现时开始,并且永不停止。即使没有订阅者,共享也会一直保持活跃。
3. WhileSubscribed
fun WhileSubscribed(
stopTimeoutMillis: Long = 0,
replayExpirationMillis: Long = Long.MAX_VALUE
): SharingStarted
在这种共享模式下,共享在第一个订阅者出现时开始,而在最后一个订阅者消失时立即停止。可以设置 stopTimeoutMillis 来指定停止的超时时间,以及 replayExpirationMillis 来指定回放缓存的过期时间。许您对流的共享行为进行更灵活的控制,以满足您的特定需求
val sharingStarted = SharingStarted.WhileSubscribed(
stopTimeoutMillis = 5000, // 在第一个订阅者出现时开始,当最后一个订阅者消失后,等待 5 秒钟,然后停止共享
replayExpirationMillis = 60000 // 缓存将在 1 分钟后过期
)