手动观察 SnapshotStateList
Posted
技术标签:
【中文标题】手动观察 SnapshotStateList【英文标题】:Manually observe SnapshotStateList 【发布时间】:2022-01-21 01:03:41 【问题描述】:如何 或 MutableState?它说 mutableStateListOf 返回可以观察的列表,但我找不到这样的方法。是不是只有 Compose 才能观察到变化?
【问题讨论】:
这能回答你的问题吗? Jetpack Compose Observe mutableStateOf in ViewModel 【参考方案1】:观察状态对象(例如mutableStateOf
或mutableStateListOf()
的结果)的最简单方法是使用snapshotFlow
。
snapshotFlow
的block
参数将在它使用的任何状态对象发生更改时调用,block
的结果将被发送到流。
或者,您可以使用SnapshotStateObserver
,它允许多路复用单个应用观察者来观察大量 lambda。这就是 Compose UI 布局和绘图使用的功能,例如,用于跟踪何时重新计算布局以及何时重放绘图命令。
State 对象没有 observe
或 subscribe
等价物,因为 Snapshots
的设计和优化是为了观察函数读取的一组开放的、动态的对象以及它调用的任何函数(例如 Compose 需要);并且没有实现单个对象(Compose 不需要)的快速路径,因此成本很高。拥有状态对象的observe
方法意味着它既快速又便宜,但事实并非如此。
【讨论】:
以上是关于手动观察 SnapshotStateList的主要内容,如果未能解决你的问题,请参考以下文章