Android应用或界面启动时间性能

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




猜你喜欢

转载自blog.csdn.net/hdandan2015/article/details/78519797