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

这里写图片描述

关于iOS 9之前的本地推送,本地推送杀掉进程后到底能不能收到?

昨天下午去面试 面试官:“本地推送,在杀掉进程以后还可以收到吗?” 我(非常肯定的):“可以的” 面试官:“并不能,不信你回去写个demo吧” 我:“我写过本地推送,确实是可以的啊” 面试官...
  • u013679882
  • u013679882
  • 2016年11月29日 11:49
  • 2092

如何让你的app在后台被干掉后优雅的重新启动

如何让你的app在后台被干掉后优雅的重新启动
  • qianqianyihao
  • qianqianyihao
  • 2016年10月11日 14:09
  • 6816

iOS应用被杀死后继续获取用户地理位置

转自:点击打开链接苹果官方在iOS7.1以后对CoreLocation SDK进行更新,允许开发者在App被杀死的情况下,仍然可以获取用户的地理位置并且做一些操作.前期准备:打开后台定位功能plist...
  • wxs0124
  • wxs0124
  • 2017年02月08日 17:40
  • 1836

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

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

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

一条UPDATE从生到死的整个过程的深入解析   这是曾经Oracle原厂的一位兄弟问我的一个问题,后来也有些人问起这个问题:   用ORACLE内部原理描述以下过程: 1、sqlplus...
  • xiangjai
  • xiangjai
  • 2017年08月09日 08:58
  • 118

一条UPDATE从生到死的整个过程的深入解析(oracle体系看完后看这个)

一条UPDATE从生到死的整个过程的深入解析 这是曾经Oracle原厂的一位兄弟问我的一个问题,后来也有些人问起这个问题:   用ORACLE内部原理描述以下过程: 1、sqlplu...
  • haiross
  • haiross
  • 2014年11月26日 14:37
  • 943

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

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

iOS app 上传到AppStore过程中遇到的问题汇总

1> 上传1024*1024的APP图标时,图标中不能包含alpha通道或者透明度; 2> LanchImage的图片格式只能是png格式,jpg格式xcode无法加载成功; 3> 开发者在填写...
  • u013915422
  • u013915422
  • 2016年05月13日 11:04
  • 6833

一款新闻类iOS APP的诞生过程(初学)

一款新闻类iOS APP的诞生过程 原文地址 题外话: 此篇文章以一个iOS新手的角度解释一款新闻类iOS APP诞生的过程,详细介绍在这过程中碰到的问题和我的解决思路。欢迎大家指正。 菜单界...
  • yueyuanchang
  • yueyuanchang
  • 2015年01月04日 13:54
  • 458

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

App开发和发布过程中用到的证书  Certification(证书) 证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种: 1、Developer Certification(开发证...
  • xxw888
  • xxw888
  • 2017年02月23日 09:36
  • 323
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS App由生到死的过程
举报原因:
原因补充:

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