android Compose 1.4.0更新后的LazyList性能问题

kjthegm6  于 2023-05-05  发布在  Android
关注(0)|答案(1)|浏览(153)

由于一些新的修复,我决定将我的项目更新到稳定的Compose1.4.0,但很快发现我所有的可点击卡片的LazyList在滚动时变得非常滞后。我通过添加一个onClick参数使我的卡片可点击。
下面是一些滞后的LazyList示例代码:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            LazyListTestTheme {
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    MainContent()
                }
            }
        }
    }
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MainContent() {
    Scaffold(
        topBar = {
            LargeTopAppBar(
                title = {
                    Text(text = "Test app")
                }
            )
        },
        content = {
            LazyColumn(
                contentPadding = it
            ){
                items(
                    count = 32,
                    itemContent = { index ->
                        CustomCard(text = index.toString())
                    }
                )
            }
        }
    )
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CustomCard(
    text: String
) {
    Card(
        modifier = Modifier
            .fillMaxWidth()
            .height(128.dp)
            .padding(16.dp, 4.dp),
        onClick = {

        }
    ) {
        Text(

            text = text
        )
    }
}

我在Compose 1.2.0和1.3.2版本上测试了它,然后更新到1.4.0。Compose 1.2.0和1.3.2似乎工作得很好,而1.4.0上的LazyList滚动是滞后的,但只有可点击的元素。我能做什么呢?这是一个新的编写bug还是我做错了什么?

w8f9ii69

w8f9ii691#

尝试使用可点击的修饰符,因为卡片的onClick是实验性的Card(modifier = Modifier .clickable(onClick = { onClickCard()})...
如果没有变化,那么尝试暂时将列表从脚手架中拉出,看看这是否是一个因素。

相关问题