本文共 1320 字,大约阅读时间需要 4 分钟。
测试准备
Systrace工具特别适合用来分析UI的性能。
理论基础:在开发应用时,通常使用60fps的帧率来检测交互是否流畅,及16.66ms/帧
首先确认一点,android studio集成了所有Android SDK下的工具。涉及android SDK的工具可以直接在android studio中安装使用。Android SDK
另外新的版本android studio取消了systrace的菜单,需要到android的SDK目录下打开该工具。
mac中android studio的安装目录为:
注意此目录在进入的时候需要以下命令:cd /Applications/Android\ Studio.app/Contents,规避空格
/Applications/Android Studio.app/Contents$
android studio的资源库安装目录:注意通过finder访问这个目录的时候,lounious下无Library,而是一个隐藏文件夹:资源库
/Users/lounious/Library/Android/sdk
使用systrace
lounious:~$ cd ./Library/Android/sdk/platform-tools/systrace/lounious:~/Library/Android/sdk/platform-tools/systrace$ lsNOTICE UPSTREAM_REVISION catapult systrace.pylounious:~/Library/Android/sdk/platform-tools/systrace$python systrace.py -o trace.html --time=10 --app=com.alipay.iot.xpaas sched gfx view wm
如何分析systrace报告:
快捷键:
w放大时间轴
s缩小时间轴
a右移时间轴
d左移时间轴
e 右移时间轴
圆形的颜色含义
通常是绿色的,颜色为黄色或者红色的圆形表示该帧超过了维持平滑流畅的60帧每秒(FPS)所需的16.6毫秒的运行时间限制。我们知道,FPS>=60时,我们就不会觉得动画卡顿。当FPS=60时是个什么概念呢?1000/60≈16.6,也就是说在大概16ms中,我们要进行一次屏幕的刷新绘制。Vsync是垂直同步的缩写,每16ms会有一个Vsync信号,那么系统在每次拿到Vsync信号时刷新屏幕,我们就不会觉得Jank了(闪烁,可以理解为卡顿或者停顿)。
Jank的类型
static const char* JANK_TYPE_NAMES[] = {
"Missed Vsync", //错过vsync
"High input latency", //高输入延迟
"Slow UI thread", //UI线程耗时
"Slow bitmap uploads", //图片上传耗时
"Slow issue draw commands", //执行渲染命令耗时
};
转载地址:https://blog.csdn.net/louniuous/article/details/105852903 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!