【Android】RecyclerView性能优化

问题

使用横向滑动的RecyclerView之后,发现在横向滑动的时候没有问题,但是垂直滑动的时候,有明显的卡顿。

解决

通过以下几个方式,可以优化滑动卡顿的问题

1.notifyDataSetChanged
一般来说如果recyclerView的数据有变化,我们会调用notifyDataSetChanged以刷新界面。 但是每一次调用notifyDataSetChanged都会RecyclerView的重新布局和重新绘制,性能会有所损耗。

对于RecyclerView提供了增量更新的方式,通过比较新数据和旧数据的Diff,只做微量的刷新。@DiffUtil

2.RecycledViewPool
我们都知道RecyclerView的缓存机制,可以避免创建过多的View。 但是对于跨RecyclerView之间,如果不做特殊处理,是无法做到View的共享。

通过API提供的setRecycledViewPool,可以自定义RecyclerView的缓存池。 做到跨RecyclerView共享缓存,这样就可以减少View的创建

3.RecycledViewPool.setMaxRecycledViews(ViewType ,count)
默认RecycledViewPool的缓存池最大数量是5,但是如果我们跨recyclerview共享缓存池的话,最大数如果过少,

其实会影响滑动的效果。根据实际情况跳转。我们这边设置为20

4.setRecyclerChildrenOnDetach
这个方法表示在Child View 执行onViewDetached的时候需不需要执行recycler 如果设置了RecycledViewPool,

需要手动将这个参数设为true,可以优化滑动效果

5.setInitialPrefetchItemCount
这个设置在RecyclerView空闲时预加载View的个数,这样可以在闲时做事,就可以避免忙时的卡顿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值