对于应用开发者来说,最困难的问题之一就是确保动画流畅、无故障且无卡顿。当系统也在执行会占用大量资源的后台任务时,此问题尤其难以调试。没有简单的方法来确定某种卡顿现象是由您的应用还是系统导致的。不过,我们提供了一个性能剖析器工具,可帮助您确定不良行为的可能来源。
在 Chrome 操作系统上渲染
经过细致优化的应用(如游戏)通常会使用双重缓冲来尽可能缩短用户响应时间。尽管如此,仍有很多因素可能会降低性能。例如,如果渲染某一帧花费的时间太长,渲染的结果还没有为下一个缓冲区交换做好准备,因此前一帧就会重复。这样,渲染程序就无法开始渲染下一帧,从而导致更多问题。这种情况对于“纯粹的”Android 开发者来说很熟悉。当应用在 Chrome 操作系统上运行时,情况变得更加复杂。
在桌面设备上运行的应用不会直接渲染到屏幕的显示帧,而是将其数据渲染成纹理。通常有多个应用,每个应用都将其图形渲染成纹理。系统会使用合成器在屏幕上构建视图,将所有纹理组合成一张桌面图片。
合成器在后台以透明方式工作。不过,它引入了一帧时间延迟,以最大限度地利用 GPU 管道。在理想情况下,可能没有必要这样做,但这样可以缓和系统性能波动,并且有助于平衡不对称负载。
当操作系统工作非常吃力时,GPU 可能会遭到挤压。从渲染某一帧到它出现在屏幕上之间可能会有额外的延迟。系统可能会使用四重缓冲来进行补偿(这取决于硬件)。即使有了更深的缓冲,图形管道仍可能会出现故障。
ARC 图形跟踪器
Chrome 操作系统具有一个分析工具,该工具可以显示缓冲区如何渗透整个系统、何时发生内存交换、CPU/GPU 的繁忙程度,以及您的应用在给定时间执行的操作:
设置性能剖析器
如需使用性能剖析器,您必须运行 M75 或更高版本。为获得最佳效果,我们建议您使用 Intel 设备。
在使用性能剖析器之前,您应该为您的应用植入跟踪记录。将 Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>);
添加到代码中您希望包含跟踪记录的任意位置。您使用的 Event
应以 customTrace.
前缀开头。此前缀不会出现在跟踪记录消息中。
如需设置性能剖析器,请按以下步骤操作:
- 开启开发者模式。
- 开启 Chrome 设置并启用 ARC 图形缓冲区可视化工具。
- 导航到
chrome://arc-graphics-tracing
。
运行性能剖析器
- 勾选卡顿时停止。
- 运行 Android 应用。
- 当 Android 应用处于活动状态并具有焦点时,按
Ctrl+Shift+G
。
当发生某种卡顿现象时,浏览器窗口会弹出。您可以使用 w
和 s
键来缩放时间轴。