iOS App由生到死的过程

原创 2016年05月30日 14:18:10

万物都会经历由生到死的过程,人不例外,当然App也是如此,此谓App的声明周期。具体来说App的声明周期就是App从启动到关闭这一过程中发生的一系列事件。由于iOS4中引入了多任务功能,App能够在后台执行,与iOS3的声明周期并不相同。在此,我们只讨论iOS4的声明周期。
用户点击主界面上相应App的图标来启动App。点击之后,依次发生了两个动作:

  • 显示启动画面
  • 调用main方法启动App

iOS4上,App的状态共分为5种:

  • Not running:App没有启动。
  • Inactive:App在前台运行,但当前不接收操作事件(虽然它可能在执行某些代码)。这种状态通常只用于在不同状态切换时的过渡,一般停留时间较短,例外的情况是,在锁屏状态或系统提示用户响应某些事件(如接听电话或收到短信),可以长时间停留在该状态。
  • Active:App在前台运行,并且接收操作事件。
  • Background:App在后台运行,并且正在执行代码。大多数App在进入Suspended状态之前会进入该状态。停留在该状态的时间长短将视执行代码的时间而定。
  • Suspended:App在后台运行,但没有执行代码。在低内存情况下,系统将在不发出任何通知的情况下终止该App,以为前台App腾出更多的内存。

知道了App的状态后,我们来了解下App是如何在这些状态之间进行切换的:
用户将一个在后台运行的应用调回前台时,系统首先将App转换到Inactive状态,然后再转换到Active状态。这个过程将调用application delegate中的两个方法:

  • applicationWillEnterForeground
  • applicationDidBecomeActive

这里写图片描述

后台执行是iOS 4新增加的功能,在某些情况下,你可能想禁用该功能,虽然一般不鼓励这么做。操作方法是在Info.plist文件里面添加UIApplicationExitsOnSuspend属性,并将其值设置为YES。此时,App就只剩下Not running、Inactive、active三种状态,永远不会进入Background和Suspended状态。
当有来电、收到短信、日程提醒时,处理Active状态的应用将会临时进入Inactive状态。当用户决定接受或忽略来电、信息和日程时,App的状态将发生改变。

  • 如果用户忽略来电、短信和日程,将重新进入Active状态
  • 如果用户接受来电、短信和日程,将转入Suspended状态

此时,也会触发application delegate的三个方法:

  • applicationWillResumeActive
  • applicationDidBecomeActive
  • applicationDidEnterBackground

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

一条UPDATE从生到死的整个过程的深入解析

这是曾经Oracle原厂的一位兄弟问我的一个问题,后来也有些人问起这个问题:   用ORACLE内部原理描述以下过程: 1、sqlplus gyj/gyj@orcl 2、updatet_gyj ...

IOS App开发和发布过程中用到的证书

App开发和发布过程中用到的证书  Certification(证书) 证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种: 1、Developer Certification(开发证...

写个发布iOS app的过程,供参考。

写个发布iOS app的过程,供参考。 发布于 2011 年 9 月 9 日 由 chiefoforc | 编辑 3 comments 这篇blog写到一...

ios app: 使用企业license设置发布app的过程

转载于:http://www.cnblogs.com/ToDoToTry/p/4213118.html ios开发者证书与企业证书的内容,关系,以及ios app 使用企业license设置发布ap...

八车道IOS APP程序

  • 2014-01-28 21:19
  • 459KB
  • 下载

Windows程序的窗口和消息 -- 一个Windows程序从生到死

注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚! ...

查看iOS APP里的图片资源

  • 2016-04-26 17:02
  • 250KB
  • 下载

clousim学习笔记----关于cloudlet从生到死

1 cloudlet 什么意思 首先cloulet  并不继承cloudsim 中的simEntity ,所以他只是作为在不同的实体之间传递任务信息的用途。他作为一个任务的载体,需要记录的信息有:br...
  • rually
  • rually
  • 2015-10-27 21:06
  • 1753
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)