Android应用或界面时间测量:
官方介绍:https://developer.android.com/topic/performance/launch-time.html
从Android 4.4(API Level 19)开始,logcat包含了输出displayed时间相关的日志信息,dispalyed行后面的时间值表示应用启动进程和完成绘制屏幕上相应活动之间所花费的时间。所经过的时间包含以下事件序列:
1,启动过程
2,初始化对象
3,创建并初始化activity
4,布局
5,首次绘制应用
logcat日志行有输出类似于下面的示例:
ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms
备注:windows下用findstr;adb进入android后用grep,使用logcat过滤参数以方便日志查看:
adb logcat -s ActivityManager |findstr "Displayed”-- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志;
如果要保存为文件,
adb logcat -v time -s ActivityManager ->保存路径和文件名
ActivityManager: Displayed显示的度量时间在logcat输出不一定等到所有资源加载和显示捕获的时间:不包括那些不在布局文件引用或应用程序创建的对象初始化部分引用的资源,因为加载它们是一个内联进程,并且不会阻止应用程序的初始显示。
有时logcat输出包含一个额外字段 total time,例如:
ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms (total +1m22s643ms)
在这种情况下,第一个 time的值仅仅是属于第一个绘制的activity。
total
time测量从应用程序进程开始,并可以包括另外的首次启动但没有显示到屏幕上的任何activities。
total
time仅在单个
activity和多个
activity总启动时间之间存在差异时显示。
另外,也可以通过使用ADB shell 命令运行应用程序来测量初始显示时间。例子:
adb [-d|-e|-s <serialNumber>] shell am start -S -W com.example.app/.MainActivity -c android.intent.category.LAUNCHER -a android.intent.action.MAIN这个度量出现在logcat输出之前,你 的终端窗口也可以显示:
Starting: Intent Activity: com.example.app/.MainActivity ThisTime: 2044 TotalTime: 2044 WaitTime: 2054 Complete-c 和-a参数是可选的。
引用https://www.zhihu.com/question/35487841?sort=created结论:
如果只关心某个【应用自身】启动耗时,参考TotalTime;如果关心【系统】启动应用耗时,参考WaitTime;如果关心【应用有界面】Activity启动耗时,参考ThisTime。