app-冷启动

摘抄:

当app启动时,任何一个地方有耗时操作都会拖慢我们应用的启动速度,而应用启动时间是用毫秒度量的,对于毫秒级别的快慢度量我们还是需要去精确的测量到到底应用启动花了多少时间,而根据这个时间来做衡量。从点击应用的启动图标开始创建出一个新的进程直到我们看到了界面的第一帧,这段时间就是应用的启动时间。所以我们统计的就是这一段时间,其中最为精确的时间统计方法就是使用 “adb shell” 命令的方式来进行统计。 adb shell am start -W [packageName]/[packageName.MainActivity]

adb shell am start -w packagename/activity
$ adb shell am start -W com.speed.test/com.speed.test.HomeActivity Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.speed.test/.HomeActivity } Status: ok Activity: com.speed.test/.HomeActivity ThisTime: 496 TotalTime: 496 WaitTime: 503Complete

  • WaitTime 返回从 startActivity 到应用第一帧完全显示这段时间. 就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间;
  • ThisTime 表示一连串启动 Activity 的最后一个 Activity 的启动耗时;
  • TotalTime 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause的耗时。

开发者一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时。


安卓中应用的启动方式分为两种:冷启动和热启动。

  1. 冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。
  2. 热启动:当启动应用时,后台已有该应用的进程(例:按back键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。



Application—>attachBaseContext()—>onCreate()—>Activity—>onCreate()—>配置主题中背景等属性—>onStart()—>onResume()—>测量布局绘制显示在界面上。很显然,我们需要优化这个启动时间,需要做的是Application从初始化到Activity显示这一过程,那么,如何去优化呢?



猜你喜欢

转载自blog.csdn.net/pingyao_3/article/details/80003742