StateFlow 是 Kotlin 协程库中提供的状态流,属于冷流(Cold Stream)的优化变种,核心用于持有并发射单一、可观察的状态,是 Android 开发中实现 MVVM 架构状态管理的核心工具之一。
一、核心特性
- 持有当前状态:始终保存最新的状态值,新订阅者会立即收到当前最新值(区别于普通
Flow的冷流特性)。 - 值的唯一性:同一时间仅能持有一个状态值,重复发送相同值时,订阅者不会收到通知(默认基于
Any.equals()判断)。 - 协程绑定:依赖协程上下文运行,生命周期与协程绑定。
- 线程安全:状态更新操作是线程安全的,支持多线程并发修改。
二、基本使用
1. 依赖引入
确保项目中引入 Kotlin 协程核心库(Android 项目通常已内置):
// build.gradle (Module) dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3" // Android 专用 }2. 定义 StateFlow
StateFlow 通常通过 MutableStateFlow 实现可变状态,对外暴露只读的 StateFlow:
impor