RecyclerView 性能优化
RecyclerView 性能优化
RecyclerView 是 Android 中常用的列表控件,性能优劣直接影响应用流畅度。下面先简单介绍基础用法,再深入聊聊性能优化技巧。
一、基础使用方法
- 布局文件中添加 RecyclerView:
1 | <androidx.recyclerview.widget.RecyclerView |
- 在 Activity 或 Fragment 中设置适配器和布局管理器:
1 | RecyclerView recyclerView = findViewById(R.id.recyclerView); |
- 创建适配器时实现必要方法:
1 | public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { |
二、性能优化技巧
避免重复创建视图
RecyclerView 内部通过 ViewHolder 缓存视图,确保onCreateViewHolder只创建必要的视图。要保证onBindViewHolder只绑定数据,不做创建操作。合理使用
setHasFixedSize(true)
如果列表大小固定不变,调用此方法可提高性能,避免不必要的布局计算。
1 | recyclerView.setHasFixedSize(true); |
- 使用合适的布局管理器
LinearLayoutManager:简单列表,性能好。GridLayoutManager或StaggeredGridLayoutManager:复杂网格布局,适当调整缓存策略。
减少层级嵌套和复杂布局
复杂的布局层次会导致测量和绘制时间增加,尽量扁平化布局。使用差异更新(DiffUtil)
更新数据时使用DiffUtil只刷新变化的部分,避免全量刷新。
1 | DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(callback); |
图片加载优化
使用 Glide、Picasso 等库异步加载图片,避免主线程阻塞,并做好内存缓存。预加载和缓存
设置setItemViewCacheSize适当缓存更多视图,预加载提高滑动流畅度。避免不必要的请求布局
尽量减少调用notifyDataSetChanged(),优先使用细粒度的notifyItemChanged()、notifyItemInserted()等。
欢迎大佬们补充交流,一起把列表滑动做到飞起!
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.









