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性能数据:

- 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
相关产品推荐
相关产品推荐

