必看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 可见性控制,延迟加载布局和网络数据,提升首屏速度和性能。

相关推荐
我命由我1234511 小时前
Android Studio - Android Studio 自定义预览尺寸
android·java·ide·java-ee·android studio·android-studio·android runtime
取个名字太难了~13 小时前
越用越便宜,越用越强大:影像 SDK 的边际成本递减与网络效应实践
android·数码相机·美颜·相机连接·demu
AFinalStone17 小时前
Android 7系统网络(四)Native层(下)—netd Controller详解
android·网络
爱笑鱼17 小时前
Handler(一):post 之后,Runnable 到底在哪个线程执行?
android
木木子2218 小时前
[特殊字符] 音乐播放器——状态驱动的多媒体控制
android·开发语言·华为·php·harmonyos
雨白18 小时前
C 语言基础:结构体、联合体与枚举
android
阿巴斯甜20 小时前
Android 代码混淆
android
apihz1 天前
台风实时与历史详情查询免费 API 接口完整教程
android·开发语言·tcp/ip·dubbo·台风·天气预报
浪客川1 天前
AOSP源码隐藏状态栏
android·aosp
没有了遇见1 天前
AI Agent 是什么?—— 一文理解 LLM、Memory、Skills、Tools、MCP、Workflow,Context
android·前端·程序员