启动速度

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

 

以上是关于启动速度的主要内容,如果未能解决你的问题,请参考以下文章

片段android的缓慢创建

Android小部件,启动一个片段?

scrapy按顺序启动多个爬虫代码片段(python3)

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

如何从片段适配器启动活动

在ViewPager上,在onPageSelected上的片段上启动动画