启动速度
Posted 红红的测试之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动速度相关的知识,希望对你有一定的参考价值。
标准如下:
应用启动的过程:
1.桌面点击图标 2.系统为应用创建进程 3.进程创建自己的组件
Activity的启动过程:
首先执行的是onCreate()、onStart()、onResume(),再等View树全部构建完毕,setContentView中的View全部显示结束了,算作是应用完全启动了
速度测试方法差别:
adb shell am start -W -n 包名/activity
➜ ~ adb shell am start -W com.xys.preferencetest/.MainActivity Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xys.preferencetest/.MainActivity } Status: ok Activity: com.xys.preferencetest/.MainActivity ThisTime: 1047 TotalTime: 1047 WaitTime: 1059 Complete
- ThisTime:最后一个启动的Activity的启动耗时
- TotalTime:自己的所有Activity的启动耗时
- WaitTime: ActivityManagerService启动App的Activity时的总时间(包括当前Activity的onPause()和自己Activity的启动)
缺陷:未包括view的绘制
$ adb logcat | grep “ActivityManager”
Activity启动,到Layout全部显示的过程,这里并不包括数据的加载,因为很多App在加载时会使用懒加载模式,即数据拉取后,再刷新默认的UI
优点:包括了view的绘制
缺点:未包括数据的加载
最跟移器测试相接近的软件方法:
reportFullyDrawn(自定义上报时间)
$ adb logcat | grep “ActivityManager” ActivityManager: Displayed com.example.launcher/. LauncherActivity: +999ms ActivityManager: Fully drawn com.example.launcher/. LauncherActivity: +1s999ms
前提条件:API19+,所以,这里需要对SDK版本进行判断
缺陷:API19+,要代码添加
帧率的测试:
➜ ~ adb shell screenrecord --bugreport /sdcard/test.mp4
备注:
强制冷启动:在『开发者选项』中的Background Process Limit中设置为No Background Processes
以上是关于启动速度的主要内容,如果未能解决你的问题,请参考以下文章