android JetpackCompose中的性能

4urapxun  于 2023-04-04  发布在  Android
关注(0)|答案(1)|浏览(152)

正如你在代码中看到的,我有两个可组合的函数,名为Screen和Body。当showError的状态发生变化时,body函数也会被重新组合。它是否有任何副作用?如果有,如何避免这种重新组合。

@Composable
    fun Screen(viewModel: ViewModel) {
        val state by viewModel.uiState.collectAsState()
        if (state.showError) {
            Text("sample view")
        }
        Body(state = state)
    }

    @Composable
    fun Body(state: UiState) {
     // todo
    }
hwamh0ep

hwamh0ep1#

这是compose函数的默认行为。每当由于状态值的任何更改而观察到状态时,函数都会重新组合并显示更新的值。所以,是的,在使用可组合函数时,您可能需要确保一些事情,例如,如果你在一个可组合函数中声明了一个变量,并且这个变量后来被更新,那么这个变量'的值将在重新组合函数时进入默认状态。
要避免重组,请执行以下操作:我不认为这是可能的,特别是当你使用状态变量或记忆函数时,但你可以做的是最小化所需的重组。
下面是关于其生命周期如何工作的参考。
https://developer.android.com/jetpack/compose/lifecycle

相关问题