1 功能:
获取最近帧渲染的耗时数据
详细使用方法请参考https://www.cnblogs.com/zhengna/p/10032078.html
本人认为这篇博客介绍的很详细同时也很全面
2 原理图:
图解:
- 在控制台执行dumpsys gfx <package> 命令后,通过binder机制向AMS(ActivityManagerService)传递包名以及其他参数
- AMS通过包名获取到进程(若没有指定包名则遍历所有进程)的相关信息并输出到标准输出流中,并通过binder机制调用应用进程的相关函数
- 应用进程通过JNI调用RenderThread相关方法获取到帧的缓存数据(创建Task排队执行),并输出到标准输出中
- 调用WM(WindowManagerGlobal)相关函数获取RootView相关信息,并输出到标准输出中
- 若携带framestates参数通过JNI调用RenderThread获取详细帧的信息(CanvasContext),并输出到标准输出中
- 最后就是在WM中获取View相关的信息并输出到标准输出中
3 时序图: