如何使带有 Composable ViewHolder 的 RecyclerView 渲染速度更快?

Ely*_*lye 8 android android-viewholder android-recyclerview android-jetpack-compose

根据https://developer.android.com/jetpack/compose/interop/compose-in-existing-ui#compose-recyclerview,可在 RecyclerView 中使用的可组合 ViewHolder 如下

import androidx.compose.ui.platform.ViewCompositionStrategy

class MyComposeViewHolder(
    val composeView: ComposeView
) : RecyclerView.ViewHolder(composeView) {

    init {
        composeView.setViewCompositionStrategy(
            ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
        )
    }

    fun bind(input: String) {
        composeView.setContent {
            MdcTheme {
                Text(input)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来,每次都是bind可组合的setContent(即再次重绘)。

我使用Profile GPU Rendering测量速度,它清楚地表明 ReyclerView+ComposeViewHolder 的混合比纯 RecyclerView 或 LazyColumn 慢。

在此输入图像描述

您可以在这里获取设计

我们怎样才能加快混合 RecyclerView+ComposeViewHolder 的速度?

new*_*our 1

请在启用 R8 的情况下运行应用程序的发布版本。这显着提高了性能。