可变状态 VS 可变状态流?
Posted
技术标签:
【中文标题】可变状态 VS 可变状态流?【英文标题】:mutableState VS mutableStateFlow? 【发布时间】:2022-01-10 00:38:06 【问题描述】:我很困惑,有人可以向我解释一下,这两者之间的主要区别是什么?我很难理解。 mutableState 是在 Jetpack Compose 中引入的,现在我的问题是,我们是否应该在 View Model 中使用它来替代 Mutabel State Flow?它们的目的和主要区别是什么?
【问题讨论】:
Jetpack Compose MutableState schedules a recomposition of the composable,MutableStateFlow 没有。换句话说,MutableStateFlow 是通用状态,MutableState 旨在与可组合使用。 【参考方案1】:mutableState 正如您所提到的,它是 Jetpack Compose 的一部分,它充当触发器和可观察数据,以触发重新组合或更新您的 ui 状态。组成取决于读取mutableState
值的组件级别
在可组合项中使用 mutableStateOf 取决于您的逻辑。这是 Jetpack Compose 的简单更新标志。
另一方面,mutableStateFlow 类似于 RxJava 的主题,您可以在其中设置和观察值,并以反应方式对其执行多项操作,例如映射、过滤、设置线程或使用它处理错误。
myStateFlow.debounce(1000)
.onStart
.catch
.distinctUntilChanged()
.launchIn(viewModelScope)
【讨论】:
【参考方案2】:MutableState
用于 Jetpack Compose,MutableStateFlow
用于替换 MutableLiveData
,在 ViewModel
内部使用。
【讨论】:
以上是关于可变状态 VS 可变状态流?的主要内容,如果未能解决你的问题,请参考以下文章
多线程----Immutable VS Mutable (可变与不可变)