提高 UI 性能

Improving UI performance

我用 Android studio profiler(记录的系统跟踪)检查了我的 UI,我得到了以下结果: 正如您在这里看到的,当我打开我的片段时,加载一个帧需要 28 毫秒。 我们还可以看到,几乎所有的时间都是通过遍历和测量得到的。我试图重构我的 xml,现在它看起来像:

<MotionLayout>
    <SwiperefreshLayout>
        <NestedScrollView>
            <LinearLayout>
                <include
                 layout="cardView1">
                <include
                 layout="cardView2">
                //..........
                <include
                 layout="cardVie7">
            <LinearLayout>
        <NestedScrollView>
    <SwipeRefreshLayout>
<MotionLayout>

它很复杂 UI,有很多嵌套的卡片,里面可以有 recycleview 和其他内容。如您所见,在我重构之后,帧时间仍然存在一些问题。有没有办法提高我的 UI 性能,或者至少获得更详细的信息,了解问题所在以及为什么绘制 UI 需要这么长时间?

首先,MotionLayout 看起来没有必要。另外,您可以使用 RecyclerView 来显示卡片。

添加自定义 Trace 事件并对应用程序进行分析后,我发现 recyclerView 项目 inflation 占用了几乎所有的帧时间。使用 DiffUtil and RecyclerView Async Loading

解决了问题