news 2026/6/13 19:10:31

如何在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/11 22:04:33

场馆预约小程序开发:解锁 “预约经济” 的高效解决方案

在数字化转型加速的背景下,场馆预约需求已渗透体育、办公、教育、文旅等多个领域。传统线下预约模式存在 “信息不透明、操作繁琐、管理低效” 等痛点,而小程序凭借 “轻量化、高触达、易操作” 的优势,成为场馆预约场景的理想载体。本文从核…

作者头像 李华
网站建设 2026/6/12 8:34:50

Product Hunt 每日热榜 | 2025-12-16

1. Unloop 标语:为注意力缺陷多动症(ADHD)和神经多样性思维者设计的视觉模式映射 介绍:Unloop 是一款可视化的模式映射工具,帮助你识别那些让你感到陷入困境的触发因素、想法、情绪和行为。把这些内容可视化&#xf…

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

软考高项|老金团队三位大神老师,总有一位适合你!

备考软考高项还在为选老师纠结吗? 今天给大家安利老金团队的三大王牌老师 他们各有所长,能cover所有备考需求👇🏆 学术泰斗:金老师▪️ 教学特色:30年高校教学经验,理论功底深厚 ▪️ 拿手绝活&…

作者头像 李华
网站建设 2026/6/13 5:17:33

大模型学习笔记

公司私有数据大模型应用方案1. RAG(Retrieval Augmented Generation)1)工作原理RAG 通过从外部知识库中检索相关信息,并将其作为提示输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能…

作者头像 李华
网站建设 2026/6/13 21:36:01

Windows Subsystem for Linux (WSL) 介绍

💻 Windows Subsystem for Linux (WSL) 介绍 WSL(适用于 Linux 的 Windows 子系统)是微软开发的一项 Windows 功能,它允许开发人员直接在 Windows 操作系统上运行完整的 GNU/Linux 环境,包括大多数命令行工具、实用程序…

作者头像 李华
网站建设 2026/6/12 6:57:46

sward全面介绍(13) - 集成Ldap,使用Ldap用户登录sward

集成ldap用户功能划入社区版本,本篇文章将全面介绍如何在sward中集成ldap用户并实现ldap用户登录sward。1、配置Ldap进入系统设置->用户->用户目录,点击Ldap后的配置按钮,填写Ldap的配置信息。参数说明类型选择Ldap服务器类型AD/LDAP名…

作者头像 李华