gpt4 book ai didi

android - 在不调用 recompose 的情况下,如何更新 jetpack 中的特定 ui 组件?

转载 作者:行者123 更新时间:2023-12-05 02:38:39 29 4
gpt4 key购买 nike

在我的用户界面中,我有一个圆形进度条,进度每秒更新一次。该 UI 中的其他文本保持不变(静态)。我只想更新进度条,而不是重新组合整个屏幕。我怎样才能做到这一点?

最佳答案

您需要将屏幕拆分为不同的可组合项,以便在状态值发生变化时,所有依赖于该状态的 View 都被分组到一个可组合项中。

以这段代码为例:

@Composable
fun TestScreen(
) {
var progress by remember { mutableStateOf(0f) }
var otherStateValue by remember { mutableStateOf("") }
Box {
SomeTextView(otherStateValue)
ProgressView(progress)
}
}


@Composable
fun SomeTextView(text: String) {

}

@Composable
fun ProgressView(progress: Float) {

}

如果任何 progresstext 值发生变化,TestScreen 将被重新组合。但是如果 text 自上次重组后没有改变,SomeTextView 将被缓存并且不会被重组。

参见 compose mental model有关重组工作原理的更多详细信息。

此外,如果您明智地构建 View ,不直接在代码中使用任何副作用(查看副作用 documentation 了解更多详细信息)并使用 remember/view model 缓存计算结果/etc(检查 compose 中的状态 documentation ),然后重组将是一个非常轻的操作。

关于android - 在不调用 recompose 的情况下,如何更新 jetpack 中的特定 ui 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69438287/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com