A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 Android_Robot 于 2016-9-7 17:48 编辑


初探百度Android性能测试之流畅度测试(二)

2.4 数数:如何得到流畅度(SM: SMoothness)

接着上面的结论,如果在这样的机制下每次Loop运行之前进行通知,记个数就好了。

很幸运我们在新的Android的那一套机制中找到了一个画图的打杂工Choreographer这个对象。根据Google的官方API文档描述中,它是用来协调animations、input以及drawing时序的,并且每个Loop共用一个Choreographer对象。

下图为Choreographer的定义和结构。
结论

通过如上原理分析可以得出结论:

1) Android 4.1引入了VSync机制后,可以通过其Loop来了解当前App最高绘制能力。

固定每隔16.6ms执行一次(这个值是一个静态变量,会根据系统版本不同而采用不同的值,目前测试版本是16.6ms这样最高的刷新的帧率就控制在60FPS以内);

如果没有以上事件的时候同样也会运行这样一个Loop;

这个Loop在1s之内运行了多少次,即可以表示当前App绘制的最高的能力,也就是Android App卡顿的程度;

另外,在一次Loop时如果执行时间超过了16.6ms,那么用多于16.6ms的时间除以16.6ms,即是当前App的丢帧(SF: Skipped Frame)。

2) 可以在Choreographer的回调FrameCallback中,按秒计数表示当前App的流畅程度,即流畅度SM(SMoothness)。

采用这样方式就可以在App内部观测当前App的流畅度了。并且在丢帧的地方打印traceView,就可以知道丢帧的大概原因,大概位置。定位代码问题。



其他精华资源推荐:

18 个回复

正序浏览
长期更新啊,加油!!!
回复 使用道具 举报
不错,不错!!!!!
回复 使用道具 举报
学习一下
回复 使用道具 举报
给力,赞
回复 使用道具 举报
每次来都能长知识
回复 使用道具 举报
学习下,嘿嘿
回复 使用道具 举报
感觉测试好难,android
回复 使用道具 举报
好想进就业班,但是考试考不过,怎么办
回复 使用道具 举报
厉害,学习下
回复 使用道具 举报
学习下,谢谢
回复 使用道具 举报
讲得太好了 ,顶顶顶!!!
回复 使用道具 举报
感觉好难啊,全都看不懂。{:3_65:}{:3_65:}{:3_65:}

55e736d12f2eb938d3de795ad0628535e4dd6fe2.jpg (66.96 KB, 下载次数: 106)

55e736d12f2eb938d3de795ad0628535e4dd6fe2.jpg
回复 使用道具 举报
感觉android四大组件好难学了
回复 使用道具 举报
支持支持
回复 使用道具 举报
赞!!!!!!!!!!!
回复 使用道具 举报
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
找的就是这个
回复 使用道具 举报
来黑马,学java,但求月薪过万
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马