Android面试题——掘金-性能优化之布局优化(4.3)
一 概述
1 | 常见 Android 布局优化面试题 |
二 面试题解答(仅供参考)
2.1 为什么要进行布局优化?
1 | -减少 View 的层级和数量可以提升 UI 渲染效率,避免布局过度复杂。 |
2.2 如何查看布局是否存在性能问题?
1 | 可以使用以下工具或方法: |
2.3 如何优化布局层级?
1 | -避免深层嵌套布局,如 LinearLayout 套 LinearLayout。 |
2.4 LinearLayout 嵌套和 ConstraintLayout 哪个更优?
1 | -ConstraintLayout 通常性能更好,能通过一个节点完成多重布局关系(等价于多个嵌套 LinearLayout)。 |
2.5 如何避免布局中的重复 measure?
1 | -避免使用 android:layout_weight(会触发双测量)。 |
2.6 ViewStub 适合哪些场景?
1 | ViewStub 是一种延迟加载的 View,它初始不会占用内存和绘制资源,适合用于: |
2.7 如何减少过度绘制(Overdraw)?
1 | -避免背景重复叠加,例如父子 View 都设置了背景。 |
2.8 如何优化 RecyclerView 中的布局?
1 | -ViewHolder 复用:避免频繁创建子布局。 |
2.9 如何通过布局加速 App 启动?
1 | -启动页使用静态图/极简布局,避免复杂 XML。 |
2.10 如何检测布局层级过深?
1 | -adb shell dumpsys gfxinfo 包名 查看 View 层级。 |
2.11 布局优化 Checklist
优化点 | 说明 |
---|---|
使用 ConstraintLayout 替代嵌套布局 | 降低层级、提高性能 |
避免使用 layout_weight | 避免两次 measure |
使用 ViewStub 延迟加载 | 节省内存 & 启动时间 |
减少嵌套 wrap_content | 避免递归测量 |
使用 include + merge | 提高复用,减少 View 节点 |
开启硬件加速 + 检查 GPU Overdraw | 降低渲染压力 |
首页极简布局 + SplashTheme | 冷启动提速 |
三 参考
- 掘金—知识库的大纲