当您的应用程序启动(无论是在前台或后台),使用您的应用程序委托application:willFinishLaunchingWithOptions:application:didFinishLaunchingWithOptions:方法来执行以下操作:

  • 检查启动选项字典的内容,了解有关启动应用程序的原因,并做出相应的响应。

  • 初始化您的应用程序的关键数据结构。

  • 准备您的应用程序的窗口和视图以供显示:

在启动时,系统会自动加载您的应用程序的main Storyboard加载初始视图控制器。

application:willFinishLaunchingWithOptions:application:didFinishLaunchingWithOptions:方法应该始终尽可能轻量级,以减少您的应用程序的启动时间。应用程序预计将启动,初始化UIWindow,并在不到5秒钟内开始处理事件。如果应用程序没有及时完成其启动周期,则系统会将其杀死而无法响应。因此,任何可能会减慢启动速度的任务(例如访问网络)都应该安排在辅助线程上执行。

当您的应用程序启动时,它将从未运行状态转移到活动状态或后台状态,并在非活动状态中短暂转换。作为启动周期的一部分,系统为您的应用程序创建一个进程和主线程,并main在该主线程上调用您的应用程序的功能。mainXcode项目附带的默认函数会立即将控制权移交给UIKit框架,UIKit框架完成初始化应用程序并准备运行的大部分工

下图显示了将应用程序启动到前台时发生的事件序列,包括调用的应用程序委托方法。

当您的应用程序启动到后台时(通常是为了处理某种类型的后台事件),启动周期会稍微改变为下图所示的状态。主要区别在于,您的应用不是处于活动状态,而是进入后台状态以处理该事件,并可能在此之后的某个时刻暂停。在启动到后台时,系统仍会加载应用的用户界面文件,但不会显示应用的窗口。

要确定您的应用程序是启动到前台还是后台,请在您的或委托方法中检查applicationState共享UIApplication对象的属性。当应用程序启动到前台时,此属性包含该值。当应用程序启动到后台时,该属性将包含该值。您可以使用此差异来相应地调整委托方法的启动时间行为。

application:willFinishLaunchingWithOptions:

application:didFinishLaunchingWithOptions:

UIApplicationStateInactive

UIApplicationStateBackground

应对临时中断

当发生基于警报的中断(例如来电)时,应用程序暂时移至不活动状态,以便系统可以提示用户如何进行。该应用程序保持这种状态,直到用户解散警报。此时,应用程序将返回到活动状态或移动到后台状态。
显示了发生基于警报的中断时,通过您的应用程序发生的事件流。

当您的应用程序进入前台时该怎么做

回到前台,您的应用程序有机会重新启动它移到后台时停止的任务。移动到前台时出现的步骤如图4-4所示。该applicationWillEnterForeground:方法应该撤销在您的applicationDidEnterBackground:方法中完成的任何操作,并且该applicationDidBecomeActive:方法应该继续执行与启动时相同的激活任务。

以上查阅与苹果官方文档, 原文地址:

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html#//apple_ref/doc/uid/TP40007072-CH8-SW2

iOS 应用程序启动时要做什么的更多相关文章

  1. iOS app 程序启动原理

    iOS app 程序启动原理 Info.plist: 常见设置     建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件, ...

  2. VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)

    之前写的一个VC应用程序,是程序启动时就直接出现在任务栏, 窗体不出现,等用户点击任务栏图标再出现窗口.和一些防火墙什么的软件类似. 这种效果实现并不是很困难的,硬是找不到最好的.为什么呢? 首先,在 ...

  3. 如何在ASP.NET Core程序启动时运行异步任务(2)

    原文:Running async tasks on app startup in ASP.NET Core (Part 2) 作者:Andrew Lock 译者:Lamond Lu 在我的上一篇博客中 ...

  4. 如何在ASP.NET Core程序启动时运行异步任务(1)

    原文:Running async tasks on app startup in ASP.NET Core (Part 1) 作者:Andrew Lock 译者:Lamond Lu 背景 当我们做项目 ...

  5. Code First 迁移----官方 应用程序启动时自动升级(MigrateDatabaseToLatestVersion 初始值设定项)

    Code First 迁移 如果使用的是 Code First 工作流,推荐使用 Code First 迁移改进应用程序的数据库架构. 迁移提供一组允许以下操作的工具: 创建可用于 EF 模型的初始数 ...

  6. Android应用程序启动时发生AndroidRuntime : ClassNotFoundException for Activity class的解决方法

    在android应用程序启动时抛出下面异常导致启动失败:07-09 17:12:35.709: ERROR/AndroidRuntime(3866): Uncaught handler: thread ...

  7. 如何在ASP.NET Core程序启动时运行异步任务(3)

    原文:Running async tasks on app startup in ASP.NET Core (Part 3) 作者:Andrew Lock 译者:Lamond Lu 之前我写了两篇有关 ...

  8. SpringBoot程序启动时执行初始化代码

    因项目集成了Redis缓存部分数据,需要在程序启动时将数据加载到Redis中,即初始化数据到Redis. 在SpringBoot项目下,即在容器初始化完毕后执行我们自己的初始化代码. 第一步:创建实现 ...

  9. iOS APP程序启动原理

    UIApplication 程序启动原理 一个应用程序运行就必须要有一个进程,一个进程至少要有一个线程,我们把这个线程叫做主线程,主线程开启之后会开启一个主运行循环,如果不开启一个运行循环,程序开启了 ...

随机推荐

  1. .net 发送qq邮件

    最近开发一个项目,需要给客户发送报告邮件,在开发中遇到本地调试发送邮件一切正常,但当部署到服务器上的时候,一直返回“发送失败”,在此记录,以免以后采坑 webapi 端代码: /// <summ ...

  2. 执行 Run manage.py Task 报 AttributeError: 'Command' object has no attribute 'usage'?

    这个问题,是python与Pycharm不兼容导致,解决办法将Pycharm升级最新版本

  3. Erlang/Elixir精选Q&A

    精选的定位是什么? 已至2019年,Erlang/Elixir中文社区还是一座黑暗森林,每个技术人都怀揣着自己独有的葵花宝典独自摸索,没有一个开放的分享平台,大量优质文章没有得到该有的关注. 与此同时 ...

  4. bay——巡检RAC命令_版本.txt

    df -lhhostnamecat /etc/hostsifconfig ps -ef | grep tnsps -ef | grep asmps -ef | grep ora_ ls -l /dev ...

  5. 图像处理&计算机视觉中upscale,downscale的翻译理解

    最近在看SAN网络(Second-order Attention Network for Single Image Super-Resolution)的论文,其中的Upscale module理解的不 ...

  6. 从傅里叶变换(FFT)到数论变换(NTT)

    FFT可以用来计算多项式乘法,但是复数的运算中含有大量的浮点数,精度较低.对于只有整数参与运算的多项式,有时,\(\text{NTT(Number-Theoretic Transform)}\)会是更 ...

  7. NOIP 2012 文化之旅

    洛谷 P1078 文化之旅 洛谷传送门 JDOJ 1788: [NOIP2012]文化之旅 T4 JDOJ传送门 Description Input Output Sample Input Input ...

  8. 【ECNU77】位与数对个数(数位DP)

    点此看题面 大致题意: 求\(\sum_{x=0}^{a-1}\sum_{y=0}^{b-1}[(x\&y)<k]\). 数位\(DP\) 显然数位\(DP\)吧. 我们设\(f_{n, ...

  9. CSP2019 树上的数 题解

    题面 这是一道典型的部分分启发正解的题. 所以我们先来看两个部分分. Part 1 菊花图 这应该是除了暴力以外最好想的一档部分分了. 如上图(节点上的数字已省略),如果我们依次删去边(2)(1)(3 ...

  10. NopCommerce 4.2的安装与运行

    一.关于NopCommerce NopCommerce是国外ASP.Net领域一个高质量的B2C开源电商项目,最新版本4.2基于ASP.NET Core MVC 2.2和EF Core 2.2开发,其 ...