Android性能优化篇之布局优化

绝大部分APP的设计中,都是提供界面与用户进行交互通信,如何保证页面流畅不卡顿也成为我们需要关注的重点,本篇将介绍如何针对布局进行优化。

1.捕获定位界面是否存在卡顿掉帧的情况

1.1 打开Android Device Monitor工具

Android性能优化篇之布局优化

1.2 设置要捕获的信息

Android性能优化篇之布局优化

1.3 捕获信息

点击OK后在手机上进行操作,期间的操作过程信息将被记录,捕获时间结束后自动保存到trace.html文件中。此处我的操作是捕获进入一个消息界面过程的情况。

2.分析trace.html文件

2.1 使用Google Chrome 打开生成的文件,具体信息如下

可以通过W(放大)S(缩小)A(左移)D(右移)进行操作。

横坐标是以时间为单位,纵坐标是以进程-线程的方式来划分,同一进程的线程为一组放在一起。

Android性能优化篇之布局优化

2.2 帧信息

Android性能优化篇之布局优化

一般情况下,在60hz频率中完成一帧的绘制工作需要控制在16.6ms内,绿色图标代表此帧能在16.6ms正常完成绘制工作,而黄色和红色图标表示此帧并未能在16.6ms完成绘制工作,导致掉帧情况,红色代表掉帧情况严重,需要我们去优化处理。

2.3 线程信息

Android性能优化篇之布局优化

通过线程信息可以方便我们查看某个时刻的线程状态,四种颜色分别对应四种不同的线程状态:

Android性能优化篇之布局优化

2.4 分析具体信息

选取一个红色标志放大信息可以查看到measure过程所耗时间比较多,点击measure区域可以查看详细信息。初步猜想可能是界面层级过多造成。

Android性能优化篇之布局优化

Description给出具体优化建议

Android性能优化篇之布局优化

2.5 使用Hierarchy View查看Tree View 情况

Android性能优化篇之布局优化

可以看出确实有部分分支层级过深,此外可以借助手机自带的GPU过度渲染功能定位到具体的控件。

3.0 优化措施

1.减少页面布局嵌套,优先采用ConstraintLayout。

2.自定义View时尽可能减少过度绘制。

3.合理采用include、merge、viewstub。

对页面层级进行优化后的效果如下:

Android性能优化篇之布局优化