我尽量不打错别字,用词准确,不造成阅读障碍。

一.GPU渲染速度

该工具在“开发者选项”里面,是用来展示应用每一帧中渲染消耗的时间及内容。

android获取gpu渲染器型号 安卓10gpu渲染_竖线

1.图中每一个竖条就是一帧,不同颜色代表不同的活动内容,下面会详细讲解;

2."横"着的绿线表示16ms的”及格线“,小于16ms的帧数透明度要低一些(最右边那部分),可以选择性忽略,大于16ms的透明度会高一些,看的更清晰。当竖线超出这条横线时,可能会使动画出现暂停。日常开发中要想做到完全不超过这条线是很难的,反正我是没见过。

3.上图显示是Android6.0以后的样子,图片显示为8个颜色,Android4.0-5.0(API级别14-21)为4种颜色,下面会说明。

每种颜色代表不同的含义,所以需要特意说明一下:

android获取gpu渲染器型号 安卓10gpu渲染_竖线_02

简单解释一些不易懂的说明:

红色:意思就是说,竖线越高,说明需要绘制的视图越多,正常应用中这部分一般是比较高的,很难降下来。

浅蓝色:表示图片信息上传到GPU所消耗的时间,竖条越高说明图片越大或很多,所以这里的优化方向是减少图片数量和缩小图片大小。

深绿色(最下面的绿色):表示在当前线程中执行了太多任务,UI渲染跟不上Sync信号(刷新信号)而掉帧,一般是主线程。这个地方是优化的重点,因为大部分卡顿、掉帧都会在这里的时间上体现出来,所以竖线比较高。

深绿色部分是重点,本人开发中曾经发现RecyclerView滚动卡顿,发现滚动时深绿色部分很高,说明主要是代码执行时间过长,再借助Android Profiler工具,发现是Adapter中做文字过滤时replaceAll()方法次数太多,耗时太久,挪开后列表滚动就流畅了。

Android4.0—Android5.0使用的颜色只有四种:

android获取gpu渲染器型号 安卓10gpu渲染_开发者_03


因为日常开发中不太关注5.0以下的系统,所以对这一部分没什么研究。

二.GPU过度绘制

主要有四个颜色:蓝、绿、粉红、红;

蓝:过度绘制1次。

绿:过度绘制2次。

粉红:过度绘制3次。

红色:过度绘制4次或更多。

android获取gpu渲染器型号 安卓10gpu渲染_Android App GPU渲染_04


有些过度绘制是不可避免的,不需要刻意做到完全没有。

android获取gpu渲染器型号 安卓10gpu渲染_android获取gpu渲染器型号_05


最后应该做到尽量少的过度绘制,如右图。

参考网站:

https://developer.android.google.cn/studio/profile/inspect-gpu-rendering