【问题标题】:When should I use @Immutable in compose?我什么时候应该在撰写中使用@Immutable?
【发布时间】:2022-09-23 22:36:13
【问题描述】:

我应该在哪里放置 Immutable 注释以启用组合优化? 1、2 或/和 3,为什么?

让我感到困惑的是,TextField 的标准 VisualTransformation 接口有这个注释,但是 PasswordVisualTransformation 没有,并且 @Immutable 没有被继承

// 1 - @Immutable
sealed class State(val option1: String) {

    // 2 - @Immutable
    object One : State(\"\")

    // 3 - @Immutable
    data class Two(val option2: String) : State(\"\")
}

@Composable
fun Screen(state: State) { }

    标签: android android-jetpack-compose


    【解决方案1】:

    您只需将其添加到第一个(顶级密封类)。

    【讨论】:

      【解决方案2】:

      第一个选项就足够了。您可以使用compose compiler metrics report 或skipped recompositions 仔细检查并更改:

      data class Two(val option2: String) : State("")
      

      至

      data class Two(var option2: String) : State("")
      

      使用 var 将确保编译器将 Two 标记为不稳定,因此您将看到 @Immutable 注释的好处。如果没有此更改 - 可组合将被标记为可跳过且稳定,因此您不会注意到任何差异

      【讨论】:

        猜你喜欢
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        • 2018-06-26
        • 2012-09-22
        • 1970-01-01
        • 2012-12-23
        相关资源
        最近更新 更多