RecyclerView的一些优化点

1.RecycledPool的重用

场景以及使用:

多个RecyclerView出现,并且他们的item布局结构一致,这时候可以进行重用。

在进行RecyclerView的初始化设置时候进行RecycledPool的设置。

 //每个单元的视频列表的RecycledPool
    private var mRecycledViewPool: RecyclerView.RecycledViewPool? = null

unitVideoListContentRv.run {
                layoutManager = GridLayoutManager(itemView.context, 3)
                if (mRecycledViewPool != null) {
                    setRecycledViewPool(mRecycledViewPool)
                } else {
                    mRecycledViewPool = recycledViewPool
                }
                ...........
            }

重用前后的对比:

本次展示的是长列表中的item嵌套列表,进行多item的加载然后上下滑动,同时检测内存的开销占用。

image.png

列表的规模是13个item,每个item中有4个视频item,规模不算特别大。

重用RecycledPool之前:

image.png

数据加载完毕之后,最后上下滑动的内存趋于平稳在48.4m

重用RecycledPool之后:

image.png

数据加载完毕之后,最后上下滑动的内存趋于平稳在40m。

对比总结:

其实很明显可以看到内存开销减少,而内存开销减少能提升列表的流畅度,效果是显而易见的。这次的列表数据规模还不算大,后续如果规模增加到很大,那么对比将会更加明显。

2.setHasFixedSize(boolean)的使用

方法的名字就表明了,设置是否有固定的尺寸,就是说RecyclerView是否有固定的尺寸,如果设置了true。那么会在以下的情景用到:

onMeasure---测量

如果设置了true,那么RecyclerView的mHasFixedSize变量为true。

@Override
    protected void onMeasure(int widthSpec, int heightSpec) {
      if (mLayout == 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值