
以下答案仅作参考,视实现情况而定:
- 如果RecyclerView的每一项的高度是固定不变的话,就把RecyclerView的setHasFixedSize方法设为true;可以避免requestLayout的多次计算。
- Adapter的onBindViewHolder方法是运行在主线程上的,不要此方法里做耗时操作。
- 尽量不要用Adapter的notifyDataChange进行全部刷新,而根据操作调用相关的notifyItemXXX方法对列表进行局部刷新(这种刷新还自带动画效果)。
notifyItemRangeInserted(position,count);
notifyItemRangeRemoved(position,count);
notifyItemRemoved(fromPosition,toPosition);
notifyItemRangeChanged(position,count,payload);
- 对于Item的布局在设计时尽量减少嵌套层次(推荐用相对布局或约束布局)。
- 当列表的item项里面嵌套RecyclerView的时候建议使用用RecycledViewPool来优化性能。
- 设置RecyclerView的缓存,用内存换流畅:
recyclerView.setItemViewCacheSize(20);
recyclerView.setDrawingCacheEnabled(true);
recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
点击链接加入QQ群聊:https://jq.qq.com/?_wv=1027&k=5z4fzdT
或关注微信公众号:口袋里的安卓

网友评论