作者:心在天堂590120_993_292 | 来源:互联网 | 2023-06-18 12:02
过度绘制优化(主要减少GPU工作量)(1)什么是过度绘制GPU的绘制过程,就跟刷墙一样一层层的进行,16ms刷一次安卓绘图设置。这样就会造成图层覆盖的现象,即无用的图层还被绘制在底层,造成不必要的浪费
过度绘制优化(主要减少GPU工作量)(1)什么是过度绘制
GPU的绘制过程,就跟刷墙一样一层层的进行,16ms刷一次安卓绘图设置。这样就会造成图层覆盖的现象,即无用的图层还被绘制在底层,造成不必要的浪费。
(2)GPU过度绘制的几种情况
a、自定义控件中,ondraw做了过多重复绘制安卓绘图设置。
b、布局层次太深,重叠性太强安卓绘图设置。用户看不到的区域,GPU也会渲染,导致耗时增加。
(3)过度绘制查看工具
查看方法:开发者选项-》Profile GPU rendering/调试GPU过度绘制
GPU过度绘制查看工具
其中颜色代表渲染的图层情况,分别代表1层、2层、3层、4层安卓绘图设置。
蓝色:过度绘制一次安卓绘图设置,无过度绘制
淡绿:过度绘制两次
淡红:过度绘制三次
深红:过度绘制四次
以上代表了4种不同程度overdraw情况,我们的目标就是尽量减少红色overdraw,看到更多的蓝色区域安卓绘图设置。
(4)处理方案
1、减少背景重复
注意主题中的设置:
a、去掉单个activity的主题设置的属性:
可以在setContentView之前
getWindow().setBackgroundDrawable(null);b、去掉所有activity主题设置中的属性:
直接在styles.xml中设置
- @null
非业务需要,不要去设置背景安卓绘图设置。
2、绘图时使用裁减减少控件之间的重合部分
3、Android7.0之后系统做出的优化:invalidate()不再执行测量和布局动作
布局的优化(主要减少CPU工作量)(1)常用工具
1、Android/sdk/tools/bin/uiautomatorviewer.bat
2、Android\sdk\tools\monitor.bat
3、Device Monitor窗口中Hierarchy view
三个点也是代表着View的Measure, Layout和Draw安卓绘图设置。
绿: 表示该View的此项性能比该View Tree中超过50%的View都要快;例如,代表Measure的是绿点,意味着这个视图的测量时间快于树中的视图对象的50%安卓绘图设置。
黄: 表示该View的此项性能比该View Tree中超过50%的View都要慢;
红: 表示该View的此项性能是View Tree中最慢的;安卓绘图设置。
(2)注意点
1.能在一个平面显示的内容安卓绘图设置,尽量只用一个容器,避免嵌套
2.尽可能把相同的容器合并merge
3.能复用的代码安卓绘图设置,用include处理,可以减少GPU重复工作