关于App的启动顺序

前言:了解你的自定义代码在启动时的执行顺序
综述:

启动一个app涉及一系列复杂的步骤顺序,大部分步骤由UIKit自动处理,在启动顺序中,UIKit调用你app delegate 方法,因此你可以执行自定义的任务,图一列举了从app启动到初始化阶段的步骤顺序

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 delegateapplication:didFinishLaunchingWithOptions:方法。

初始化完成后,系统将应用程序移动到活跃(前台)状态或后台状态。当你的应用程序移动到活跃状态时,它的窗口会出现在屏幕上,并开始响应用户的交互。当你的应用程序移动到后台状态时,它的窗口是隐藏的,它只会运行一小段时间,然后才会被暂停。

无论应用程序是在前台还是在后台启动,大多数启动时的初始化代码都应该是相同的。比如,你初始化应用程序的数据并设置应用程序的用户界面。但是,你有一些自定义任务,你只希望在移动到前台或者后台时执行,请检查下UIApplication对象的applicationState属性,UIKit将该属性设置为UIApplicationStateInactive用于移动到前台的应用程序,而UIApplicationStateBackground用于移动到后台的应用程序。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

@ts-check

本文作者:IMWeb elvin 原文出处:IMWeb社区 未经同意,禁止转载 由于 JavsScript是弱类型,所以在大型项目中使用时显得能力略有...

2038
来自专栏前端菜鸟变老鸟

sublime VI编辑器 十分钟熟练掌握各种命令

大家都知道,写代码的时候总有许多繁琐的操作,换行、删除一行、复制一行、去到行首、行尾等等。通常情况下是使用鼠标直接点击,这会大大的降低我们的开发效率,因此大家想...

631
来自专栏程序你好

JavaScript调试和优化,深入研究谷歌Chrome浏览器开发工具(一)

Chrome DevTools集成了许多子工具,用于在客户端上调试web应用程序,比如记录性能配置文件和检查动画——主要是通过DevTools控制台来学习web...

725
来自专栏進无尽的文章

扒虫篇-崩溃日志解读及Crash收集

崩溃是让发人员比较头痛的事情,app崩溃了,说明代码写的有问题,这时如何快速定位到崩溃的地方很重要。调试阶段是比较容易找到出问题的地方的,但是已经上线的app并...

861
来自专栏Samego开发资源

web性能测压工具 | siege

2148
来自专栏大内老A

框架升级后某个类型所在程序集发生转移,应用还能正常运行吗?

所谓类型转移(Type Forwarding)就是将定义在某个程序集中的类型转移到另一个程序集中。我们先通过一个简单的实例让读者朋友们对类型转移有一个感官上的认...

1776
来自专栏数据小魔方

多表合并——MS Query合并报表

今天要跟大家分享的仍然是多表合并——MS Query合并报表! excel中隐藏着一个强大的查询工具——MS Query,但是隐藏的很深,可能很多人都不知道。它...

4077
来自专栏龚军的专栏

Docker registry工作机制简介

Docker registry是存储docker image的仓库,本文通过对Docker registry的介绍,让大家更进一步了解Docker regist...

4860
来自专栏猛牛哥的博客

使用Nginx反向代理做小偷站

4016
来自专栏帘卷西风的专栏

修改lua的文件加载器,自定义lua文件加载

require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。require的路径是一个模式列表,每一个模式指明一种由虚文件名(r...

703

扫码关注云+社区