ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

第094篇 StateFlow 与 SharedFlow:UI 状态分发的标配

第094篇 StateFlow 与 SharedFlow:UI 状态分发的标配 上一节把 Flow 的冷流性质讲清了,于是两个具体类型自然成为高频考点:StateFlow和SharedFlow。它们的 API 只有几行,但面试官的问题往往在"什么时候不该用"上:为什么 StateFlow 适合做 UI 状态、为什么它不适合弹一次性的提示、replay 到底重放什么、两个界面临时停订阅会怎样。这一节把这几个追问一次性讲透。先把结论放在前面:StateFlow是有状态的——它始终持有一个value,新收集者立刻收到当前值(replay=1 语义),并且去重连续相同的值(用equals比较);SharedFlow是无状态的——它不持有值,可配replay=0之外的任意重放个数,适合"每个订阅者都要收到完整历史"或"只关心增量"的场景。一句话判据:需要"当前应该是什么"用 StateFlow,需要"发生过什么"用 SharedFlow 或 Channel。机制拆解StateFlow的实现可以理解为MutableStateFlow+ 一个容量为 1 的缓冲区 + conflation(合并)语义。三个关键行为:1.去重:value = x若与当前值equals相同,不会发射。这对 U
返回列表