SuperAPI AI 工具集

kotlin-flow-state-event-modeling

通用与其它

查看项目

更新于 10-16 05:46

技能介绍

用途:指导 Kotlin 中状态与事件流的建模选择,核心是依据重放、扇出与同步读取需求选择合适原语。

主要能力:区分 StateFlow、SharedFlow、Channel 支撑的流与冷 Flow 在缓冲、可见性与 .value 上的差异;用 Channel(BUFFERED).receiveAsFlow() 替代 MutableSharedFlow 处理单消费者一次性事件(如导航、snackbar);用相位初始化或显式状态建模(User?、密封接口、Result)避免 NoUser、Empty 等伪造领域哨兵值;用 update { } 做原子状态变换,避免读改写丢失更新;避免在函数内调用 stateIn() 导致每次调用新建共享协程;判断 WhileSubscribed 下 .value 是否可能过期;StateFlow 经 .map 后丢失 .value,需以 .stateIn() 收尾。

使用方式:在编写或审查涉及上述模式的 Kotlin 代码时应用本技能,并参考其决策表(始终有值且需同步读取选 StateFlow;热流多订阅不需要 .value 选 SharedFlow;单消费者恰好一次事件考虑 Channel;冷流单订阅用普通 Flow)。

限制:内容聚焦编码与审查规范,未提供安装命令、依赖版本或收费信息;Channel.receiveAsFlow() 为扇出而非广播,多收集器时每个事件仅交付一个收集器,如需所有观察者都收到同一事件应改用显式状态、持久存储或刻意配置的 SharedFlow。