APP冷启动定义
- Andriod:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动,也就是先实例化Application。
- IOS:App被kill掉以后一切从头开始启动的过程
APP热启动定义
- Andriod:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,也就是直接从进程中启动,不需要重新创建Application,这个方式叫热启动。
- IOS:按下home键的时候,iOS APP还存存在一段时间,这时点击APP马上就能恢复到原状态,这种启动我们称为热启动。
APP启动过程优化实战
一种对APP启动过程各个环节划分的定义
首次启动或冷启动时间:
Android:Application.attachbaseContext()开始到MainActivity.onResume()结束
iOS:main函数启动时间(SDK启动时间)到 FirstVC.viewDidAppear()结束热启动时间:
Android:Home键:Activity.onRestart()开始到Activity.onResume()结束 ;Back键:Activity.onCreate()开始到Activity.onResume()结束
iOS:applicationWillEnterForeground()开始到applicationDidBecomeActive()结束初始化时间:
Android:Application init,Application.attachbaseContext()开始到结束
iOS:main函数启动时间(SDK启动时间)到applicationDelegate.didFinishLaunchingWithOptions()开始构建时间:
Android:MainActivity init,Application.attachbaseContext()结束到Application.onCreate()结束
iOS:applicationDelegate.didFinishLaunchingWithOptions()开始到FirstVC.loadView()开始页面加载时间:
Android:MainActivity onCreate加onResume,Application.onCreate()结束到MainActivity.onResume()结束
iOS:FirstVC.loadView()开始到FirstVC.viewDidAppear()结束
事实上所谓的APP启动完毕是一个主观的概念,APP首屏的其它视图也会由于加载缓慢而导致用户认为APP启动缓慢,但在监控过程中,可将APP启动狭义的定义为第一个合理的页面加载完成事件所对应的时间,而将其它视图进行单独处理,这对于问题分析和用户体验优化是足够的。