StateFlow 和 MutableStateFlow 是 Kotlin 协程中状态管理的核心组合,二者本质是只读与可写的分工——MutableStateFlow 负责状态的修改,StateFlow 负责状态的只读暴露,遵循 “读写分离” 的设计原则。以下是二者的核心区别和关联:
一、核心定义与分工
| 特性 | StateFlow | MutableStateFlow |
|---|---|---|
| 可变性 | 只读(仅能收集状态,无法修改值) | 可变(可修改状态值,继承自 StateFlow) |
| 核心能力 | 暴露状态、供订阅者收集 | 修改状态值(value 可读写)、发送状态变更 |
| 构造方式 | 无法直接实例化,需通过 MutableStateFlow.asStateFlow() 转换 | 直接实例化(必须传入初始值) |
| 对外暴露 | 推荐作为公开 API 暴露给外部(如 ViewModel 对外提供) | 仅私有持有(避免外部直接修改状态) |
二、关键区别详解
1. 可写性(核心差异)
<