Android 包含一些设备上的开发者选项,可帮助您直观地查看您的应用可能会在何处遇到界面渲染问题,如执行不必要的渲染工作,或执行长时间的线程和 GPU 操作。本页介绍如何调试 GPU 过度绘制问题以及如何分析 GPU 渲染问题。

如需详细了解设备上的开发者选项,包括如何启用它们,请阅读配置设备上的开发者选项。

分析 GPU 渲染速度

GPU 渲染模式分析工具以滚动直方图的形式直观地显示渲染界面窗口帧所花费的时间(以每帧 16 毫秒的速度作为对比基准)。

在性能较低的 GPU 上,可用的填充率(GPU 填充帧缓冲区的速度)可能很低。随着绘制一帧所需的像素数的增加,GPU 可能需要更长的时间来处理新命令,并要求系统的其余任务等待,直到它跟上进度。此分析工具可帮助您确定 GPU 何时因尝试绘制像素而不堪重负,或何时因大量的过度绘制而被拖累。

注意: 此分析工具不适用于使用 NDK 的应用。这是因为每当 OpenGL 采用全屏上下文时,系统都会将框架消息推送到后台。在这种情况下,您可能会发现 GPU 制造商提供的分析工具很有帮助。

启用分析器

开始前,请确保您使用的是搭载 Android 4.1(API 级别 16)或更高版本的设备,并启用开发者选项。如需在使用应用时开始分析设备 GPU 渲染,请执行以下操作:

  • 在您的设备上,转到 Settings 并点按 Developer Options。
  • 在 Monitoring 部分,选择 Profile GPU Rendering。
  • 在“GPU 渲染模式分析”对话框中,选择在屏幕上显示为竖条,以在 - 设备的屏幕上叠加图形。
  • 打开您要分析的应用。

检查输出

在图 1 中显示的 GPU 渲染模式分析图形的放大图像中,您可以看到 Android 6.0(API 级别 23)上显示的彩色部分。

图 1. 放大的 GPU 渲染模式分析图形。

下面是有关输出的几点注意事项:

  • 对于每个可见应用,该工具将显示一个图形。
  • 沿水平轴的每个竖条代表一个帧,每个竖条的高度表示渲染该帧所花的时间(以毫秒为单位)。
  • 水平绿线表示 16 毫秒。要实现每秒 60 帧,代表每个帧的竖条需要保持在此线以下。当竖条超出此线时,可能会使动画出现暂停。
  • 该工具通过加宽对应的竖条并降低透明度来突出显示超出 16 毫秒阈值的帧。
  • 每个竖条都有与渲染管道中某个阶段对应的彩色区段。区段数因设备的 API 级别不同而异。

下面介绍了使用运行 Android 6.0 及更高版本的设备时分析器输出中某个竖条的每个区段。

Android 6.0 及更高版本中的竖条区段。

4.0(API 级别 14)和 5.0(API 级别 21)之间的 Android 版本具有蓝色、紫色、红色和橙色区段。低于 4.0 的 Android 版本只有蓝色、红色和橙色区段。下表显示的是 Android 4.0 和 5.0 中的竖条区段。

表 2. Android 4.0 和 5.0 中的竖条区段。

如需详细了解如何解释分析工具提供的信息,请阅读使用 GPU 渲染模式分析工具进行分析。

注意: 尽管此工具名为“GPU 渲染模式分析”,但所有受监控的进程实际上发生在 CPU 中。通过将命令提交到 GPU 触发渲染,GPU 异步渲染屏幕。在某些情况下,GPU 可能会有太多工作要处理,所以您的 CPU 必须先等待一段时间,然后才能提交新命令。如果发生这种情况,您将看到橙色竖条和红色竖条上出现峰值,且命令提交将被阻止,直到 GPU 命令队列中腾出更多空间。

直观呈现 GPU 过度绘制

这是开发者选项中的另一个功能,通过对您的界面进行彩色编码来帮助您识别过度绘制。当您的应用在同一帧中多次绘制相同像素时,便会发生过度绘制。因此,此图可显示您的应用可能在何处执行不必要的渲染工作,这可能是 GPU 多此一举地渲染用户不可见的像素所导致的性能问题。因此,您应尽可能修复过度绘制事件。

您应先启用开发者选项(如果您尚未执行此操作)。然后,如需在您的设备上直观呈现过度绘制问题,请按以下步骤操作:

  • 在您的设备上,转到 Settings 并点按 Developer Options。
  • 向下滚动到硬件加速渲染部分,并选择调试 GPU 过度绘制。
  • 在调试 GPU 过度绘制对话框中,选择显示过度绘制区域。
    Android 将按如下方式为界面元素着色,以确定过度绘制的次数:

图 2. 某个应用正常时的样子(左侧),以及它在 GPU 过度绘制后的样子(右侧)

请注意,这些颜色是半透明的,因此您在屏幕上看到的确切颜色取决于您的界面内容。

现在,您已经可以辨别出您的布局中何处出现了过度绘制,请阅读如何减少过度绘制。

请注意,有些过度绘制是不可避免的。在优化您的应用的界面时,应尝试达到大部分显示真彩色或仅有 1 次过度绘制(蓝色)的视觉效果。

图 3. 大量过度绘制的应用(左侧)以及很少过度绘制的应用(右侧)的示例

检查 GPU 渲染速度和过度绘制相关推荐

  1. Android 检查GPU渲染速度和图层渲染的调试技巧

    引言 在android手机上,经常会需要去处理一些performance问题. 包含了GPU的渲染,图层的绘制,以及一些过度绘制的情况. 本文,将会去介绍如何使用手机自带的一些功能,检查GPU绘制的情 ...

  2. Android检查GPU呈现模式和过度绘制

    Android提供了一些工具可以用来帮助分析你的UI是否存在图形绘制问题,例如执行过多不需要的绘制工作,或执行长时间的GPU操作. 分析GPU呈现模式 GPU呈现模式工具以滚动直方图的形式展现,显示渲 ...

  3. 【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )

    文章目录 一. GPU 过度绘制优化总结 二. CPU 渲染过程 三. CPU 渲染性能调试工具 Layout Inspector 四. Layout Inspector 组件树 DecorView ...

  4. Android App性能分析工具(一)——GPU渲染分析

    我尽量不打错别字,用词准确,不造成阅读障碍. 一.GPU渲染速度 该工具在"开发者选项"里面,是用来展示应用每一帧中渲染消耗的时间及内容. 1.图中每一个竖条就是一帧,不同颜色代表 ...

  5. 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )

    文章目录 一. 过度绘制 二. 过度绘制两种情况 ( 自定义控件 | 布局文件 ) 三. 过度绘制调试 1. 打开过渡绘制调试工具 2. 过渡绘制调试中不同颜色的含义 3. 过渡渲染示例 四. 背景过 ...

  6. APP性能优化之工具使用- 调试GPU过度绘制

    一.概述 今天,介绍两个比较简单的性能优化工具: 调试 GPU过度绘制  GPU呈现模式分析 其实这两个工具所解决的问题并不相同,之所以把它们放在一起,是因为它们都是Android手机自带的分析工具, ...

  7. Android开发者选项之GPU过度绘制

    做设计的人很少能知道GPU过度绘制是个什么鬼?跟设计有什么关系?今天就让大家了解了解,首先来普及一下Android开发者选项中的Debug GPU overdraw. GPU过度绘制定义 如果你粉刷过 ...

  8. 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )

    文章目录 一. 背景设置产生的过度绘制 二. Android 系统的渲染优化 1. 透明组件数据传递 2. GPU 存储机制 3. Android 7.0 之后的优化机制 三. 自定义布局渲染优化 一 ...

  9. Android之GPU过度绘制与图形渲染优化

    原址 前言 本文主要对过度绘制和图形渲染做一个概念性的描述. 同时以案例方式列出一些简单适用的优化措施. 如果你已对过度绘制有过一些了解,那么你应该明白,仅是简单的层级优化对过度绘制的改善是很小的.所 ...

最新文章

  1. IDEA IntelliJ 如何设置网站的欢迎页面
  2. 压力传感器 ZNHM-I-5KG初步测试
  3. Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件...
  4. 《软件观念革命——交互设计精髓》读书笔记(一)
  5. ORACLE普通表转换成分区表
  6. 专家:未来互联网金融行业人才缺口将超百万
  7. vim尾部空格标红显示插件
  8. linux动态路由rip配置,配置 动态路由协议OSPF和RIPv2实现全网互通^
  9. Linux时间 时区 同步
  10. jq简单封装replaceAll
  11. netbeans 定制代码_将NetBeans代码模板弯曲到我的意愿
  12. Oracle DBA课程系列笔记(16)
  13. Android 应用开发(41)---EditText(输入框)详解
  14. Windows下安装和配置Maven的方法及注意事项
  15. 剑指Offer之复杂链表的复制
  16. MFC中 使用Tab Control 控件在对话框中添加属性页
  17. stay here forever中文歌词
  18. 刀具寿命预测研究方法
  19. 网络安全证书已过期或不可信怎么办
  20. Java使用Imageio拆分gif图片时保存的图片变为黑色

热门文章

  1. 计算机二级网上哪里学,计算机二级学习网址
  2. 淘宝,天猫,京东,苏宁抢购茅台、手机等脚本(适合兼职,亲测可用)
  3. 明风社软件为什么适合学生
  4. LVGL8.2移植学习
  5. 年产2万吨山楂酒工厂的设计-装瓶工段及车间的设计(lunwen+任务书+开题+选题表+cad图纸)
  6. windows环境下msi方式安装Mysql
  7. mysql natural join_MySQL STRAIGHT_JOIN 与 NATURAL JOIN
  8. 小程序中image标签的mode属性,防止图片调整宽高而导致拉伸的问题
  9. vue echarts 3D地图+省+弹窗
  10. 考试用计算机反思800字,考试后的反思