Android App的启动流程和优化(冷启动时间)

什么是冷启动

  • 冷启动/热启动的区别
    冷启动:在启动应用前,系统中没有该应用的任何进程信息
    热启动:用户使用返回键退出应用,然后马上又重新启动应用。进程保留在后台,从已有进程启动App。热启动不会走Application。
  • 冷启动时间的计算
    这个时间值从应用启动(创建进程)开始计算,到完成视图的第一次绘制(即Activity内容对用户可见)为止。

冷启动流程

  • Zygote进程中fork创建出一个新的进程
  • 创建和初始化Application类、创建MainActivity类、inflate布局
  • 当走完onCreate、onStart、onResume走完后,contentView的measure、layout、draw显示到界面上

冷启动时间

  • 安装adb
  • adb shell am start -w packagename/activity
    例如:adb shell am start -W im.zhangyu.poster/im.zhangyu.poster.SplashActivity
  • 回到手机主屏,在Android Studio Terminal中输入命令,即可拉起app并输出启动时间
D:\AndroidProject\ZebraPoster>adb shell am start -W im.zhangyu.poster/im.zhangyu.poster.SplashActivity
Starting: Intent {
    
     act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=im.zebra.poster/.SplashActivity }
Status: ok
LaunchState: COLD
Activity: im.zhangyu.poster/im.zhangyu.store.activity.StoreActivity
TotalTime: 1017
WaitTime: 1022
Complete

如何对冷启动的时间进行优化

  • 尽量减少Application和MainActivity的onCreate方法的工作量
    例如一些三方库的的初始化工作,可以使用懒加载,在需要的时候在进行初始化。
  • 不要让Application参与业务的操作
  • 不要在Application进行耗时操做
  • 减少页面的布局深度。

猜你喜欢

转载自blog.csdn.net/yu540135101/article/details/112917033