Open kingcos opened 5 years ago
学习在启动时的代码执行顺序。
一个 App 的启动需要经过许多复杂的步骤,其中大部分由 UIKit 自动处理。在启动过程中,UIKit 会调用 App 代理中的方法,因此我们可以执行自定义的任务。图中的步骤展示了从 App 启动的时间开始直到被认为初始化完成的过程。
main
UIApplicationMain(_:_:_:_:)
UIApplication
application(_:willFinishLaunchingWithOptions:)
application(_:didFinishLaunchingWithOptions:)
当初始化完成,系统将 App 转到激活(前台)状态或后台状态。当 App 转到激活状态,其窗口出现在屏幕上,并开始响应用户交互。当 App 转到后台状态,其窗口保持隐藏,并在被暂停前运行极短的时间。
不管 App 启动到前台还是后台,大部分启动时间初始化的代码应当是相同的。举个例子,我们应当依旧初始化 App 的数据结构,并设置 App 用户界面。但是,如果有只在前台或后台运行的自定义的任务,检查 UIApplication 对象的 applicationState 属性即可。当 App 运行到前台时,UIKit 设置该属性为 UIApplication.State.inactive,当 App 运行到后台时,UIKit 设置该属性为 UIApplication.State.background。
applicationState
UIApplication.State.inactive
UIApplication.State.background
以下内容为译者添加:
Translation - [译]关于 App 启动顺序
学习在启动时的代码执行顺序。
概览
一个 App 的启动需要经过许多复杂的步骤,其中大部分由 UIKit 自动处理。在启动过程中,UIKit 会调用 App 代理中的方法,因此我们可以执行自定义的任务。图中的步骤展示了从 App 启动的时间开始直到被认为初始化完成的过程。
main
函数调用 UIKit 的UIApplicationMain(_:_:_:_:)
函数。UIApplicationMain(_:_:_:_:)
函数创建UIApplication
对象和 App 代理。application(_:willFinishLaunchingWithOptions:)
方法。application(_:didFinishLaunchingWithOptions:)
方法。当初始化完成,系统将 App 转到激活(前台)状态或后台状态。当 App 转到激活状态,其窗口出现在屏幕上,并开始响应用户交互。当 App 转到后台状态,其窗口保持隐藏,并在被暂停前运行极短的时间。
不管 App 启动到前台还是后台,大部分启动时间初始化的代码应当是相同的。举个例子,我们应当依旧初始化 App 的数据结构,并设置 App 用户界面。但是,如果有只在前台或后台运行的自定义的任务,检查
UIApplication
对象的applicationState
属性即可。当 App 运行到前台时,UIKit 设置该属性为UIApplication.State.inactive
,当 App 运行到后台时,UIKit 设置该属性为UIApplication.State.background
。参阅
启动时间
参考