问题描述
我正在尝试为Android中的每个Activity查找UI渲染时间。我知道可以使用systrace或perfetto分析性能。但是问题是从那个巨大的图形中找到UI渲染部分。谁能帮我从systrace或perfetto中找到UI渲染时间。
解决方法
系统跟踪包括来自设备上运行的所有进程的数据,因此首先您需要找到相关的进程。这里有几个让您入门的地方:
- 您的应用程序流程。名称应类似于com.your.app。扩展该进程,然后您要关注主线程(与进程名称相同的名称)和一个名为RenderThread的线程。 Screenshot of the RenderThread and main thread in Android Studio
- SurfaceFlinger过程。这是在Android设备上运行的过程,负责将表面合成到显示器。扩展该过程并查找其主线程和大量计数器(例如VSYNC,SurfaceView),以帮助您解决渲染问题。 Screenshot of SurfaceFlinger counters in Perfetto
要确切了解导致UI呈现问题的原因,需要了解应用程序的工作方式以及一些反复试验的知识。这些视频可能会为您提供帮助:
- 使用Systrace进行性能分析:https://youtu.be/9kNhB_z704I
- 使用Android Studio中的系统跟踪对应用程序性能问题进行故障排除 (这是针对Android Studio的):https://youtu.be/EjmIit_amnE
- 调试应用程序性能(该版本有些旧,仍然使用旧版systrace工具) :https://youtu.be/qXVxuLvzKek