【Android】RecyclerView性能优化
问题使用横向滑动的RecyclerView之后,发现在横向滑动的时候没有问题,但是垂直滑动的时候,有明显的卡顿。解决通过以下几个方式,可以优化滑动卡顿的问题1.notifyDataSetChanged一般来说如果recyclerView的数据有变化,我们会调用notifyDataSetChanged以刷新界面。 但是每一次调用notifyDataSetChanged都会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的个数,这样可以在闲时做事,就可以避免忙时的卡顿
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)