You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中LazyColumn比带垂直滚动Column卡顿的原因咨询

Jetpack Compose LazyColumn滚动性能问题

我需要在列表中展示商品单元格,最初使用LazyColumn实现时滚动性能极差,始终未定位到卡顿原因。后续我将LazyColumn替换为添加了垂直滚动属性的Column,滚动效果突然变得非常流畅。

初始LazyColumn实现代码

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

带垂直滚动的Column实现代码

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性能数据:
    LazyColumn版本HWUI性能数据
  • Column版本HWUI性能数据:
    Column版本HWUI性能数据

优化更新说明

后续调整了LazyColumn的items写法,调整后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)
            )
        }
    )
}

疑问

最初的LazyColumn实现性能弱于带垂直滚动的Column的具体原因是什么?


内容的提问来源于stack exchange,提问作者Maciej Przybylski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:18:00