在很多开发产品的公司都对技术追求精益求精,对自己公司的产品更是苛刻的要求,这样就要求开发者不断的提高自己的技术,优化App性能。 今天一起来学习如何对布局性能优化。
布局优化,系统在渲染UI界面的时候将消耗大量的资源,一个好的UI不仅具有良好的视觉效果,更应该具有良好的使用体验,因此布局优化就显得非常重要。
1、Android UI渲染机制
人眼所感觉的流畅画面,需要画面的帧数达到40帧每秒到60帧每秒,相信玩儿过PC游戏的朋友应该对帧数的概念非常清楚,最贱fps大概在60fps左右,这也是评价一个显卡性能高低的标准之一。
在Android中,系统通过 VSYNC 型号触发对UI的渲染,重绘,其间隔时间是16ms。这个16mx其实就是1000ms中显示60帧画面的单位时间,即1000/60 。如果系统每次渲染的时间都保持在16ms 之内,那么我们看到的UI界面将是非常流畅的,但这也就需要将所有程序的逻辑都保证在16ms内。如果不能再16ms内完成绘制,那么就会造成丢帧现象,即当前该绘制的帧被未完成的逻辑阻塞,列入一次绘制任务耗时20ms,那么在16ms系统发出 VSYNC信号时就无法绘制,该帧就被丢弃,当代下次信号才开始绘制,导致16*2ms 内都显示同一帧画面,这就是画面卡顿的原因。
Android系统提供了检测UI渲染时间的工具,打开 “开发者选项” ,选择 “Profile GPU Rendering”,并选中 “On screen as bars” 的选项,这时候在屏幕上将显示一些条形图,(已小米手机为例打开方式如下图)。
每一条柱状线都包含三部分,蓝色代表测量绘制 Display List 时间,红色代表 OPenGL 渲染 Display List 所需要的时间,黄色代表 CPU等待 GPU处理的时间。中间的绿色横线代表 VSYNC 时间 16ms, 需要尽量将所有条形图都控制在这条绿线之下。