android获取某应用的帧数据:
- <李>
<强>前提操作:强>
李>(打开手机<强>开发者选项GPU显示配置文件强>(显示于亚行壳dumpsys gfxinfo)勾上,只有4.1以上支持)
在android4.1中,谷歌提供了一个工具来,叫做“GPU呈现模式分析(概要GPU渲染)”,
在开启这个功能后,系统就会记录保留操作界面最后<强> 128帧强>图像绘制的相关时间信息
- <李>
正式开始<强>开始操作强>:
李>- <李>
打开需要测试的页面,上下匀速的滑动(这里建议最好是用脚本稳定运行)
李> <李><>强命令行亚行壳dumpsys gfxinfo com.taobao.mobile。dipei 强>
李> <李><强>结果中配置文件数据在小姐强>
李>分析下面数据(这里要注意,找到对应的页面活动对应的数据)
<强>画:表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。强>
<强>过程:表示渲染引擎执行显示列表所花的时间,观点越多,时间就越长强>
<强>执行:表示把一帧数据发送到屏幕上排版显示实际花费的时间。强>
<强>
强>
其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间,所以这个时间,一般都很短。
PS:视图类包含表面(变量名mSurface),每个表面通常对应两个缓冲区,一个缓冲区,前面一个缓冲区。
,(4.1之后是3个,一个前,两个后),其中,返回缓冲区就是帆布绘图时对应的位图(研究Android_view_Surface.cpp:: lockCanvas)。
,因此,绘画总是在缓冲区上,需要更新时,则将返回缓冲区和缓冲区面前互换。
,画+流程+执行=完整显示一帧,
,这个时间要小于16日才女士能保存每秒60帧。
将数据复制到excel中(赢得记得逐列复制,mac下就直接复制过去吧),然后将数据生成“堆积柱形图”,
- <李>
<强>统计数据强>
李>- <李>
将上面步骤中得到的三列数据,放到excl里面,将3个值加在一起得到一帧的总耗时sum1, sum2, ....sum128,共128个帧值;
李> <李>将这128个帧中大于16岁女士的数据<强> count() >强出来,比如,得到10帧是大于16岁女士的;
李> <李><强>再将10/128与8%比较,超过8%则可以断定基本不合格;强> <强>小于8%可以算合格;强>
李>
这里面的3个步骤,均可以用脚本来实现,后续会补上特定的章节来描述如何用脚本来实现;