android获取某应用的帧数据-创新互联

android获取某应用的帧数据:

成都创新互联-专业网站定制、快速模板网站建设、高性价比陵水黎族网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式陵水黎族网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖陵水黎族地区。费用合理售后完善,十余年实体公司更值得信赖。
  • 前提操作:

(打开手机 开发者选项-GPU显示配置文件(显示于 adb shell dumpsys gfxinfo)勾上,只有4.1以上支持)

在android4.1中,谷歌提供了一个工具来,叫做“ GPU呈现模式分析(Profile GPU rendering)”,

在开启这个功能后,系统就会记录保留操作界面最后128帧图像绘制的相关时间信息

  • 正式开始开始操作

  1. 打开需要测试的页面,上下匀速的滑动(这里建议最好是用脚本稳定运行)

  2. 命令行 adb shell dumpsys gfxinfo com.taobao.mobile.dipei

  3. 结果中 Profile data in ms

分析下面数据(这里要注意,找到对应的页面activity对应的数据)

Draw:表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。 

Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长 

Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。

其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间。所以这个时间,一般都很短。

PS:View类包含Surface(变量名mSurface),每个Surface通常对应两个buffer,一个front buffer, 一个back buffer。

 (4.1之后是3个,一个前,两个后)其中,back buffer就是canvas绘图时对应的bitmap (研究Android_view_Surface.cpp::lockCanvas)。

 因此,绘画总是在back buffer上,需要更新时,则将back buffer和front buffer互换。   

 Draw + Process + Execute = 完整显示一帧 ,

 这个时间要小于16ms才能保存每秒60帧。

将数据复制到excel中(win记得逐列复制,mac下就直接复制过去吧),然后将数据生成“堆积柱形图”;

  • 统计数据

  1. 将上面步骤中得到的三列数据,放到excl里面,将3个值加在一起得到一帧的总耗时sum1,sum2,....sum128,共128个帧值;

  2. 将这128个帧中大于16ms的数据count()出来,比如,得到10帧是大于16ms的;

  3. 再将10/128 与8%比较,超过8%则可以断定基本不合格;小于8%可以算合格;

这里面的3个步骤,均可以用脚本来实现,后续会补上特定的章节来描述如何用脚本来实现;

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:android获取某应用的帧数据-创新互联
浏览地址:http://scyanting.com/article/pidcc.html