news 2026/6/9 16:29:43

如何在Android中使用StateFlow和MutableStateFlow?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何在Android中使用StateFlow和MutableStateFlow?

在 Android 中,StateFlow + MutableStateFlow 是 MVVM 架构下UI 状态管理的首选方案,核心遵循「内部可变、外部只读」的封装原则,结合 ViewModel 存放状态、Lifecycle 管理订阅生命周期,确保状态安全且无内存泄漏。以下是完整的使用步骤和最佳实践:

一、前置准备(依赖)

确保项目引入 Kotlin 协程和 Android 生命周期相关依赖(Android Studio 新建项目通常已内置):

// build.gradle (Module 级别) dependencies { // 协程核心 implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3" // ViewModel (如需结合) implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2" // 生命周期扩展 (repeatOnLifecycle) implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.2" }

二、核心使用流程(ViewModel + UI 层)

步骤 1:定义状态数据类(轻量化、不可变)

推荐用 data class 封装 UI 状态,保证状态不可变(通过 copy 修改),避免多线程问题:

// 示例:页面加载状态 data class UiState( val isLoading: Boolean = false, // 加载中 val userData: String? = null, // 业务数据 val errorMsg: String? = null // 错误信息 )
步骤 2:ViewModel 中持有 MutableStateFlow,暴露 StateFlow

ViewModel 是状态的「单一数据源」,内部用 MutableStateFlow 修改状态,对外暴露只读的 StateFlow

import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 0:40:09

什么是静态住宅ip,跨境电商为什么要用静态住宅ip

在数字时代,IP地址不仅是设备联网的“ID”,更是跨境电商运营中的关键工具。尤其对于需要长期稳定、安全操作的场景,静态住宅IP逐渐成为行业首选。一、什么是静态住宅IP? 静态住宅IP(Static Residential IP)…

作者头像 李华
网站建设 2026/6/10 10:51:31

FreeSWITCH 实用工具集(个人开发整理)

FreeSWITCH 实用工具集(个人开发整理) 本仓库由一名 FreeSWITCH 爱好者维护,整理了本人在日常开发和部署中编写的一些小工具、配置模板与集成脚本。部分基础逻辑已在社区分享,完整版(含注释、部署脚本、使用示例&#…

作者头像 李华
网站建设 2026/6/9 23:28:06

模型编辑 vs 参数微调:给零算法基础AI从业者的讲解

一、先给一句话结论(先有整体感)参数微调(Fine-tuning) :通过训练,让模型整体慢慢学会一类新能力或新风格。模型编辑(Model Editing) :不重新训练模型,只是精…

作者头像 李华
网站建设 2026/6/10 5:04:08

【震惊!】护士注册选错机构?这3点必须知道!

护士资格证注册行业技术分析与解决方案行业痛点分析当前护士资格证注册领域面临多重技术挑战。测试显示,传统注册流程中信息核验环节平均耗时达5-7个工作日,材料审核通过率仅为68%。数据表明,由于各地注册政策差异和材料要求不统一&#xff0…

作者头像 李华
网站建设 2026/6/10 4:33:41

Dify默认端口修改全攻略(含API配置)

Dify 默认端口修改全攻略(含 API 配置) 在部署 AI 应用开发平台时,端口冲突几乎是每个开发者都会遇到的“第一道坎”。特别是像 Dify 这类基于 Docker Compose 构建的全栈系统,默认使用 80 和 443 端口提供 Web 服务,…

作者头像 李华