启动速度
标准如下:
应用启动的过程:
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步