Kotlin 流,仅向订阅者发出新值,并将其最后一个值保留在缓存中

Kotlin flow that emits only new values to subscribers and keeps it last value in cache

提问人:yaugenka 提问时间:11/9/2023 更新时间:11/9/2023 访问量:37

问:

是否可以创建与 Kotlin 等效的 ,即新订阅者只收到新值,并有可能访问最后发出的值?LiveEventFlow

相似于

MutableSharedFlow(
    extraBufferCapacity = 1,
    onBufferOverflow = BufferOverflow.DROP_LATEST
)

但是有可能访问额外的缓冲区值吗?

kotlin kotlin-coroutines kotlin-flow

评论

0赞 Jorn 11/9/2023
听起来你想要一个StateFlow
0赞 yaugenka 11/9/2023
不。Stateflow 向新订阅者发送当前值
0赞 Tenfour04 11/9/2023
没有任何 Flow 版本可以执行您所描述的操作。谷歌也不推荐SingleLiveEvent,因为有些问题我不记得了。他们建议围绕可变类使用 Flow 或 LiveData,您可以在其中更改属性以将其标记为“已处理”。
2赞 broot 11/9/2023
也许是一个,但是在订阅使用时:?StateFlowstateFlow.drop(1)
1赞 Jorn 11/9/2023
是的,这应该有效。但请注意,您的用例很奇怪:您不希望收到初始值的通知,但您确实希望访问它。

答: 暂无答案