Android面试题——掘金-Framework之RecyclerView(2.8)
一 概述
1 | RecyclerView 是 Android 开发中常见的 UI 组件,面试高频考点主要包括: |
二 面试题解答(仅供参考)
2.1 RecyclerView 的基本原理是什么?
1 | 1.原理 |
2.2 RecyclerView 与 ListView 的区别?
对比项 | RecyclerView | ListView |
---|---|---|
ViewHolder | 必须使用 ViewHolder |
可选 ViewHolder |
缓存机制 | 三级缓存(RecycledViewPool) | 二级缓存 |
Item 复用 | 通过 ViewHolder 复用 |
convertView 复用 |
LayoutManager | 可扩展(线性、网格、瀑布流) | 仅支持线性 |
动画 | 内置 ItemAnimator |
需要自定义 |
性能 | 适用于大数据集合 | 性能较弱 |
2.3 RecyclerView 的缓存机制是怎样的?
1 | 1.RecyclerView 采用 三级缓存机制: |
2.4 RecyclerView 复用池(RecycledViewPool)如何工作?
1 | 1.RecycledViewPool 负责多个 RecyclerView 之间共享 ViewHolder,减少 View 创建。 |
2.5 LayoutManager 有哪些?各有什么特点?
LayoutManager | 特点 |
---|---|
LinearLayoutManager | 线性布局(水平/垂直),默认方式 |
GridLayoutManager | 网格布局(N 列/行),类似 GridView |
StaggeredGridLayoutManager | 瀑布流布局,高度/宽度不固定 |
Custom LayoutManager | 自定义布局 |
示例:垂直网格
1 | GridLayoutManager layoutManager = new GridLayoutManager(context, 3); |
2.6 如何优化 RecyclerView 性能?
1 | 1.开启 setHasFixedSize(true)(如果 Item 高度固定) |
2.7 解决 RecyclerView 滑动卡顿?
1 | -优化 ViewHolder 复用 |
2.8 如何实现 RecyclerView 局部刷新?
1 | 1.更新某个 Item |
2.9 DiffUtil 是什么?如何使用?
1 | 1.概念 |
2.10 如何自定义 RecyclerView 的 ItemDecoration?
1 | 1.概念 |
2.11 RecyclerView 如何实现加载更多?
1 | 1.监听滑动事件 |
2.12 总结
1 | -RecyclerView 比 ListView 性能更强,支持自定义 LayoutManager、缓存池 |
三 参考
- 掘金—知识库的大纲