关于App的启动顺序
前言:了解你的自定义代码在启动时的执行顺序
综述:
app启动跟初始化顺序启动一个app涉及一系列复杂的步骤顺序,大部分步骤由
UIKit
自动处理,在启动顺序中,UIKit
调用你app delegate 方法,因此你可以执行自定义的任务,图一列举了从app启动到初始化阶段的步骤顺序
1、应用程序启动,要么由用户显式启动,要么由系统隐式启动。
2、xcode提供的main
函数调用UIKit的UIApplicationMain
函数。
3、UIApplicationMain
函数创建UIApplication
对象和你的app委托。
4、UIKit从主故事板或nib文件加载应用程序的默认界面。
5、UIKit调用你app delegate
中的application:willFinishLaunchingWithOptions:
方法。
6、UIKit执行状态恢复,它调用你的app delegate
和视图控制器的其他方法。
7、UIKit调用你的app delegate
的application:didFinishLaunchingWithOptions:
方法。
初始化完成后,系统将应用程序移动到活跃(前台)状态或后台状态。当你的应用程序移动到活跃状态时,它的窗口会出现在屏幕上,并开始响应用户的交互。当你的应用程序移动到后台状态时,它的窗口是隐藏的,它只会运行一小段时间,然后才会被暂停。
无论应用程序是在前台还是在后台启动,大多数启动时的初始化代码都应该是相同的。比如,你初始化应用程序的数据并设置应用程序的用户界面。但是,你有一些自定义任务,你只希望在移动到前台或者后台时执行,请检查下UIApplication
对象的applicationState
属性,UIKit将该属性设置为UIApplicationStateInactive
用于移动到前台的应用程序,而UIApplicationStateBackground
用于移动到后台的应用程序。