记录一次列表加载很多图片时卡顿的问题
现象:
仿微信朋友圈列表,多图九宫格布局,随着加载数据的增加,列表越来越卡顿,但是再次刷新之后,列表重归流畅
问题猜测及尝试解决:
1.图片缓存增多:采用图片加载栈缓存清除+预加载方案,实测效果并不理想,非本质问题
2.图片缩放处理:调用 override() 方法,对图片进行压缩,实测确实有效果,单还会有卡顿现象,增大压缩率后,卡顿现象确实有很大的优化,但是伴随的却是列表中的图片非常模糊.....
3.图片的圆角处理:在咨询了一位安卓大佬后,提出了把图片的圆角处理交给 ImageView 本身,因时间较为紧迫,所以我采用了更为极端的方式去验证,直接去除了 Glide 的圆角处理,实测本质也并不是因为圆角导致的卡顿
4.列表的复用:因为 RecyclerView 的复用不用开发者去处理,但是确实出现了卡顿的现象,所以为了验证是否是复用的问题,我采用了 ListView 的方式,最终确定是复用导致已加载的资源无法释放,最终越来越卡顿,甚至引发OOM.
问题确定:
列表的复用
解决方案:
排查xml布局,有一点引发了我的注意,我的 RecyclerView 是嵌套在 NestedScrollView 中的.....把 RecyclerView 拿到 NestedScrollView 外边,再次测试,列表仿佛吃了德芙......