必看4

熟练布局优化、布局嵌套优化、ViewStub、懒加载、过度绘制优化;

1、布局优化常用手段有哪些?

答案

  1. 减少布局嵌套层级,避免多层 LinearLayout 嵌套;
  2. 优先使用 ConstraintLayout 约束布局,扁平化结构;
  3. ViewStub 懒加载不立即显示的布局;
  4. include 复用公共布局;
  5. 删除多余无用 View、减少没必要的容器布局;
  6. 合理使用 merge 标签减少层级。

2、什么是 ViewStub?作用和原理?

答案

ViewStub 是轻量级、无尺寸、默认不加载的布局占位控件。

作用:懒加载布局 ,一开始不 inflate、不占用内存,等到需要时再inflate 加载布局。

适用:弹窗、详情、网络错误页、默认空页面 等不常显示的布局。

3、ViewStub 优点

答案

不占用绘制资源、不加载视图、减少启动耗时、减少内存占用、优化页面渲染速度。

4、include、merge、ViewStub 三者区别

答案

  • include:复用布局,直接引入布局文件,会增加层级;
  • merge :配合 include 使用,减少一层嵌套,合并根布局;
  • ViewStub懒加载占位,默认不渲染,用时再加载。

5、什么是过度绘制(OverDraw)?

答案

同一个像素点 被多次重复绘制

比如:底层背景 + 父布局背景 + 子布局背景 + 文字背景,同一位置叠了多层颜色,造成 GPU 冗余绘制,导致页面卡顿、耗电。

6、过度绘制怎么检测?

答案 开发者选项 → 开启 调试 GPU 过度绘制;屏幕颜色代表绘制层数:

  • 无色:1 层 正常
  • 蓝色:2 层 可接受
  • 绿色:3 层 偏高
  • 红色:4 层以上 严重过度绘制,必须优化

7、过度绘制怎么优化?

答案

  1. 去掉多余背景色,能不设就不设;
  2. 层级精简,减少嵌套布局;
  3. 避免父布局和子布局重复设置背景;
  4. 自定义 View 优化 onDraw,减少无效重绘
  5. 用裁剪区域,只绘制需要刷新的区域;
  6. 主题背景和布局背景合并,避免重复铺底色。

8、什么是布局懒加载?有哪些实现方式?

答案

懒加载:只在需要显示时再加载布局、请求数据,不提前加载浪费性能。

实现方式:

  1. ViewStub 布局懒加载
  2. Fragment 可见性懒加载(ViewPager 预加载优化)
  3. 网络数据懒加载,页面可见再请求接口

9、为什么要减少布局嵌套?

答案

布局层级越深,测量、布局、绘制耗时越长;

inflate 解析慢、UI 渲染慢、容易卡顿、拖慢冷启动和页面跳转速度。

10、ConstraintLayout 为什么能优化布局?

答案

可以实现扁平化布局,一层根布局搞定复杂 UI,不用多层嵌套;减少测量和布局遍历次数,提升绘制性能。

极简背诵浓缩版

布局优化核心:减少嵌套、多用 ConstraintLayout、include 复用、merge 减层级、ViewStub 懒加载。ViewStub 是轻量级占位,默认不加载,用时再 inflate,省内存省渲染。过度绘制是同一像素多层重复绘制,通过开发者工具检测,删掉多余背景、精简层级、减少重复铺色来优化。懒加载通过 ViewStub、Fragment 可见性控制,延迟加载布局和网络数据,提升首屏速度和性能。

相关推荐
Carson带你学Android1 小时前
Android 17 最后一个 Beta 发布,7 件事必须现在做
android·ai编程
ooseabiscuit1 小时前
Laravel 9.x重磅升级:PHP8新特性全解析
android
帅次1 小时前
深入 MaterialTheme:掌握 ColorScheme 与 Typography 的设计核心
android·kotlin·gradle·android jetpack·compose
阿巴斯甜2 小时前
必看2
android
重生之小比特2 小时前
【MySQL 数据库】复合查询
android·数据库·mysql
用户86022504674722 小时前
Jetpack Activity 完整示例教程
android
simplepeng3 小时前
如何减少 89% 的重组,每个Compose开发者都需要的技巧 - derivedStateOf
android·android jetpack
Android 开发者3 小时前
这次,Android 大有不同
android