【安卓开发系列 -- APP】APP 性能优化 -- 布局优化

本文深入探讨Android APP性能优化的重要方面——布局优化。从Android的绘制原理出发,解析VSYNC信号的作用,以及FrameRate与RefreshRate的关系对用户体验的影响。详细介绍了过度绘制的概念、检测与优化方法,如移除不必要的background、采用canvas.clipRect和canvas.quickreject等技巧。同时,提供布局加载优化策略,包括使用Java代码加载布局和异步加载布局的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【安卓开发系列 -- APP】APP 性能优化 -- 布局优化

【1】Android 绘制原理

渲染操作通常依赖 CPU 与 GPU,CPU 负责包括 Measure,Layout,Record,Execute 的计算操作,GPU 负责 Rasterization(栅格化)操作;

VSYNC 信号

Android 系统每隔 16ms 发出 VSYNC 信号,触发对 UI 的渲染操作;Refresh Rate 表示屏幕在一秒内刷新屏幕的次数,取决于硬件的固定参数;Frame Rate 表示 GPU 在一秒内绘制操作的帧数;Frame Rate > Refresh Rate 导致画面撕裂;Frame Rate < Refresh Rate 导致丢帧;

【2】Android 布局加载原理

对布局加载过程的拦截

【3】Android 布局优化方式

【3.1】过度绘制

Overdraw(过度绘制)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次;在多层次的 UI 结构中若不可见的 UI 也在做绘制的操作,便会导致某些像素区域被绘制了多次;导致 CPU 和 GPU 资源的浪费;

【3.1.1】过度绘制检测

【3.1.2】过度绘制优化方法

过度绘制的优化方式
1. 移除Window默认的background
2. 移除XML布局文件中的非必须的background
3. 按需显示占位图片
4. 对于复杂的自定义 view,Android 系统无法监控并自动优化
5. 采用 canvas.clipRect 帮助系统识别那些可见的区域
6. 采用 canvas.quickreject 判断是否相交
7. 采用优化标签 include标签,merge标签,ViewStub 标签

布局方面
1. 减少嵌套层级
2. 优先使用线性布局
3. 采用 ConstraintLayout

【3.2】布局加载优化方式

采用 java 代码加载
1. XML 存在 IO 操作与反射操作导致加载耗时;
2. 采用 java 方式构造布局,代码量大,不易实现,不易维护;

X2C 开源框架将 XML 转换为 JAVA 代码 

 异步加载布局

参考
本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。

【1】网易云课堂 -- 安卓性能优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值