一、冷启动耗时分析
启动应用之前需要杀掉应用进程,方式有两种:
先获取权限:adb root
方式1:
- 先过滤到应用的pid
- adb shell ps -A | grep [包名]
- adb shell kill [pid]
方式2:
adb shell pkill [含包名字段]
PS: 如果应用进程是自启的,可以使用adb shell am force-stop [包名],强制杀!
二、命令获取时间
-
操作步骤一
-
adb shell am start -S -W [包名]/[包名.对应的Activity]
-
执行命令结果如下: ThisTime:对应Activity启动耗时 TotalTime:应用自身启动耗时 = ThisTime + 应用Application等资源启动时间 WaitTime:系统启动应用耗时 = TotalTime + 系统资源启动时间
三、手动打点
- 开始埋点:在应用Application的attachBaseContext()里调用
- 结束埋点:在启动的Activity的layout.getViewTreeObserver().addOnDrawListener{ }的回调方法里面调用
- 代码如下:
object LaunchTimer {
var sTime = 0L
// 在应用Application的attachBaseContext()里调用
@JvmStatic
fun startRecord() {
sTime = System.currentTimeMillis()
}
// 在启动的Activity的layout.getViewTreeObserver().addOnDrawListener{ }的回调方法里面调用
@JvmStatic
fun endRecord() {
var costTime = System.currentTimeMillis() - sTime
}
}
PS:
- 从Android 4.4开始,可以从Log分析出应用的某个Activity到界面所花费的时间。
- 关键字:AcctivityManager: Displayed
- ActivityManager: Displayed [包名]/.XxxActivity: +520ms 这个时间和 上面的方式二命令adb启动分析的TotalTime一致