【问题标题】:LazyColumn is slower than Column with vertical scrollLazyColumn 比垂直滚动的 Column 慢
【发布时间】:2021-12-19 16:44:07
【问题描述】:

我有想要在列表中显示的产品单元格,我使用了 LazyColumn 但性能很糟糕,我找不到它为什么这么慢。然后我将 LazyColumn 切换到 Column 并且所有突然的滚动都超级流畅

LazyColumn 版本:

LazyColumn() {
    items(cartItems, key = {it.cartItem.id}) { cartItemData ->
        CartItemWithActions(data = cartItemData)
        Divider(color = colorResource(id = R.color.separator_line))
    }
}
 

列版本

val state = rememberScrollState()
Column(modifier = Modifier.verticalScroll(state)) {
    cartItems.forEach { cartItemData ->
        CartItemWithActions(data = cartItemData)
        Divider(color = colorResource(id = R.color.separator_line))
    }
}

CartItemWithActions 是我的产品单元格,其中包含我正在使用 glide 和几个文本加载的图像

LazyColumn 版本的 HWUI

列的 HWUI

谁能提供提示为什么 LazyColumn 比 Column 慢?

更新

以这种方式设置 LazyColumn 时,LazyColumn 滚动效果似乎更好

LazyColumn() {
    items(
        count = cartItems.size,
        key = {
            cartItems[it].cartItem.id
        },
        itemContent = { index ->
            val cartItemData = cartItems[index]
            CartItemWithActions(data = cartItemData)
            Divider(
                color = colorResource(id =R.color.separator_line)
            )
        }
    )
}

【问题讨论】:

  • 尝试在发布版本中运行它
  • 我试过没用
  • 我也亲身体验过,但是每次应用启动时,连续随机滚动五秒后,它似乎就消失了
  • 这不会发生在像 Text 这样简单的东西上,但是对于大量的自定义 Composables,这对我来说似乎也是一个问题。
  • @MARSK 是的,简单的布局没问题

标签: android performance kotlin android-jetpack-compose lazycolumn


【解决方案1】:

似乎以这种方式初始化 LazyColumn 解决了我的问题

LazyColumn() {
    items(
        count = cartItems.size,
        key = {
            cartItems[it].cartItem.id
        },
        itemContent = { index ->
            val cartItemData = cartItems[index]
            CartItemWithActions(data = cartItemData)
            Divider(
                color = colorResource(id =R.color.separator_line)
            )
        }
    )
}

但我还是不知道为什么

【讨论】:

  • 它工作得更好,因为使用 key 参数使 Jetpack Compose 具有与 RecyclerView 中的 DiffUtil 类似的功能。
猜你喜欢
  • 2022-01-15
  • 1970-01-01
  • 2021-11-13
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2011-03-29
  • 2011-06-29
相关资源
最近更新 更多