我的目的就是小白看了也会使用。
一、冷热启动
1、定义
冷启动:杀掉进程后重新启动应用,这时系统会重新创建一个新的进程分配给该应用,会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。
热启动:按back键、home键返回后再次启动应用,这种启动会从已有的进程中来启动应用,所以直接走MainActivity类。
ps:因为一个应用从新进程的创建到进程的销毁,Application只会初始化一次。
2、 测试方法
1)通过工具查看
- 先准备好环境,安装好sdk或者直接安装Android Studio;
- 连上手机,在Android Studio或ddms界面输入搜索条件:Displayed;
- 实际操作真机,得出以下数据。
Displayed可以显示启动加载代码、初始化工作,从启动进程到第一次绘制完成所消耗的时间
如图所示:
记录Total后面的数值即可,单位ms。
2)通过adb logcat命令查看
这种方式类似于点1,只是通过命令行直接打印出日志
- 先准备好adb环境,可参照之前文档;
- 连上手机,命令行输入:adb logcat -s ActivityManager:I | grep Displayed;
- 直接操作手机即可对应打印出时间信息,只需要看total即可。
如图所示
3)通过adb am命令查看
- 先准备好环境,可参照之前文档;
- 连上手机,先确定好应用名与主Activity,命令行输入:aapt dump badging 路径/文件名.apk;
- 根据得到的应用名与主activity,输入:adb shell am start -W 应用名/主activity。
如图所示:
名词解释:
1、ThisTime:表示一连串启动Activity的最后一个Activity的启动耗时;
2、TotalTime:表示新应用启动的耗时,包括新进程的启动和Activity的启动,但不包括前一个应用Activity pause的耗时;
3、WaitTime:WaitTime= endTime - startTime,就是总的耗时,包括前一个应用Activity pause的时间和新应用启动的时间。
一般只要关心TotalTime即可,单位ms。
重复测试需要关闭冷/热启动:(或者手动操作)
- 关闭冷启动,输入命令:adb shell am force-stop 应用名
- 关闭热启动,输入命令:adb shell input keyevent 3(等同于home)
我们一般冷热启动是查看kill掉或者双击返回再启动这两个主要场景,你可以加上初次启动(清除数据)或home出去再启动这两个场景。
3、数据分析
解释说明:
1、Best:最好,最优结果;
2、Good:好,相对而言较好;
3、Acceptable:可接受的,必须要达到的标准;
4、低于Acceptable的,视为存在瓶颈,需优化。
性能指标 | Best | Good | Acceptable |
---|---|---|---|
冷启动速度 (单位:ms) |
≤600 | ≤700 | ≤1000 |
热启动速度 (单位:ms) |
≤200 | ≤300 | ≤600 |
4、场景分析
1)取竞品的数据作为对比;
2)取历史版本的数据做对比。