【问题标题】:Recomposition in jetpack compose vs recycle in old ui?Jetpack compose 中的重组与旧 ui 中的回收?
【发布时间】:2022-01-18 22:35:42
【问题描述】:

LazyColumnLazyRow 正在替换旧 UI 中的 RecyclerView 但在 RecyclerView 中滚动项目时回到它消失然后循环到优化UI。

LazyColumn 和 LazyRow 是在做同样的事情吗?

【问题讨论】:

    标签: android kotlin android-jetpack-compose


    【解决方案1】:

    我是从Jetpack Compose basics Codelab找到的

    注意:LazyColumn 不像 RecyclerView 那样回收其子级。它 当您滚动浏览它时会发出新的 Composables 并且仍然是 高性能,因为发射 Composables 相对便宜 实例化 Android 视图

    经过测试,我看到LazyColumn 只是组成可见项目。并且,通过滚动不可见的项目将在再次可见时重新组合。

    【讨论】:

      【解决方案2】:

      LazyColumn 使用 LazyList,它使用 LazyLayout 并在需要时使用 aSubComposeLayout 重新组合子 Composable,这与使用 Modifier.verticalScroll() 的 Column 组成其所有子 Composable 不同。

      Subcomposable 有一个 subocompose 函数,可以多次调用 布局块中的时间。例如,这是发生在 懒惰的行。 slotId 允许 SubcomposeLayout 跟踪和管理 通过调用 subcompose 创建的合成。例如,如果您是 从您可能想要使用的索引的数组生成内容 数组作为它的 slotId 允许 SubcomposeLayout 确定哪个 上次生成的 subcompose 应该在重组期间使用。 此外,如果不再使用 slotid,SubcomposeLayout 将处理 其对应的成分。

      你可以阅读谷歌开发者here关于SubcomposeLayout的完整答案。

      【讨论】:

        猜你喜欢
        • 2022-10-23
        • 1970-01-01
        • 2022-11-25
        • 1970-01-01
        • 2021-07-05
        • 2021-06-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-05
        相关资源
        最近更新 更多