1.adb shell dumpsys SurfaceFlinger --latency 命令
• SurfaceFlinger管理Android帧缓冲区
• 每一次命令有128行帧数据,第一行数据表示刷新的时间间隔,剩下127行是帧率数据
• 第一列表示应用程序绘制图像的时间点
• 第二列表示在软件将帧提交到硬件绘制之前的垂直同步时间
• 第三列表示绘制完成时间点
2.adb shell dumpsys gfxinfo <PAVKAGE_NAME> framestats命令(不能用于游戏获取帧率)
• 从应用生成的最近 120 个帧中输出带有纳秒时间戳的帧时间信息
• 每一行代表应用程序生成的一帧
• 支持安卓7.0以上系统
• 不是实时数据
3.Choreographer.FrameCallback接口
• Choreographer是一个接收Vsync垂直同步信号的组件
• Choreographer中实现FrameCallback接口,然后实现里边的doFrame方法
• 通过Choreographer.getInstance().postFrameCallback(new MyFPSFrameCallback())把自己的回调添加到Choreographer之中
• 下一个frame被渲染的时候就会回调自己的callback,执行定义的doFrame操作,这时候就可以获取到这一帧的开始渲染时间