Kotlin - @Stable 是做什么的?

问题描述 投票:0回答:2

我一直在关注这篇文章,但我不确定 @Stable 注释的作用。我已经看过这个文档,但我需要一个例子来更好地理解。

android kotlin annotations
2个回答
6
投票

@Stable
是一个注释,它会告诉编译器它的值不会改变并返回完全相同的值。这应该只适用于始终静态的函数或值。

使用这个的主要原因很简单:

  1. 提高性能 -> 编译器会更快,因为你告诉他如何处理它。
  2. 您可以返回始终相同的值,无法更改。

0
投票

@Stable
注释表示某个值将始终通知 Composition(也称为触发新的重组)如果它发生变化

任何不可变的东西,包括基元,因此都是“稳定的”,因为它们永远不会改变——这意味着它们根本不必关心通知组合。

例如,该数据类可以标记为稳定,因为它是不可变的。

@Stable
data class Movie(val id: Int, val name: String)

这意味着可以跳过以电影作为输入的可组合项。例如,在下面的可组合项中,当

MovieOverview
更改时,可以跳过
liked
。这可以提高性能,因为需要完成的工作更少。

@Composable
fun MovieCard(movie: Movie) {
    val liked = remember { mutableStateOf(false) }

    Column {
        MovieOverview(movie)
        Checkbox(
            checked = liked.value,
            onCheckedChange = { isChecked -> liked.value = isChecked }
        )
    }
}

}

但是,这也意味着可变项可以是稳定的,只要它们在更改时通知组合即可。

MutableState
就是最好的例子。它被标记为稳定,但也是可变的。每当你改变状态值时,就会触发重组。

https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState https://developer.android.com/jetpack/compose/lifecycle#skipping

© www.soinside.com 2019 - 2024. All rights reserved.