RecyclerView的卡顿分析与解决方案

RecyclerView是Android开发中常见的组件之一,也是官方推荐的ListView的替代品。然而在实际使用中我遇到了RecyclerView卡顿的问题,在这里记录一下。也综合总结网上其他可能发生卡顿的情况和解决方案。

 

通过归类分析,RecyclerView出现卡顿的问题可以分为以下两大类情况:

1.在UI线程进行网络任务或者其他耗时操作

2.图片数据过多或者过大

 

1的解决方法:

将耗时任务异步处理,addData部分放在UI线程中。

 

2数据过多的解决方法:

后端控制:请求接口添加分页参数以及每页显示数量,由后端返回分页参数和每页显示数量。

前端控制:对展示数据进行切分加工,复制并显示前100条等

推荐方案:后端控制,避免写死在app中旧版本不可控。

 

2图片过大的解决方法:

压缩图片,使用图片加载框架,图片格式调整,监听滑动完毕再进行加载,尽量在setAdapter前完成。

 

其他情况解决思路:

减少层级,自定义重写RecyclerView,减少过渡绘制区域,减少item中布局层级,局部刷新(指定具体position),使用缓存池recyclerviewPool,确定item高度以减少绘制次数(recyclerView.setHasFixedSize(true);)。

 

最后要提一点,谷歌官方不推荐嵌套Recyclerview。在实际使用中常常见到NestedScrollView嵌套RecyclerView的做法,这样会导致RecyclerView 的每条数据都会创建一个item,数据量大的时候会不断发生GC,最终影响UI线程。

你可能感兴趣的:(个人总结,android,java)