iOS应用的生命周期


iOS应用的生命周期是指从应用程序的启动,到应用程序结束整个阶段的全过程。

整个iOS应用的生命周期包含了各种状态,有时系统会从应用的一种状态切换至另一种状态来响应系统发生的事件。例如当应用程序崩溃、电话打入、或其它中断应用的事件发生时,当前运行的应用程序会通过切换状态来响应突发。

作为iOS开发者,需要熟知iOS应用的生命周期,在不同的生命周期做出相应的操作,比如在用户按下Home键退出程序时,进行一些数据的备份操作。

1
iOS应用程序的状态

iOS应用程序的生命周期共包含Notrunning未运行、Inactive未激活、Active已激活、Background后台和Suspended挂起五个状态,这五种状态下的互相转换如图1-4-1所示:

图1-4-1

iOS应用程序五种状态的描述如表1-4-1所示:

表1-4-1   iOS应用程序生命周期的各个状态

状态类型

状态说明

未运行(Not  running)

应用程序尚未被启动。

未激活(Inactive)

应用程序正在前台运行,但是无法接收事件。通常当应用程序从一种状态进入另一种状态时,中间会在此状态短暂停留。比如用户锁屏或者响应来电等。在没有事件处理情况下,应用程序通常处于此状态。

已激活(Active)

应用程序正在前台运行,并且可以接收各种事件。应用程序在前台运行绝大部分处于此状态。

后台(Background)

应用程序处于后台,并且还在执行某些代码。应用程序在进入挂起状态时,通常会在此状态停留一会。应用程序可以通过一些特殊的请求,从而延长处于后台状态的时间。

挂起(Suspended)

应用程序处于后台,并且不能执行任何代码。当挂起时,应用程序仍然处于内存中,由系统决定何时从内存中清除处于该状态的程序,以提供更多的内存给处于前台的其它应用程序。当系统发生低内存告警时,会将处于挂起状态的程序从内存中清除。

2

演示iOS应用程序的各种状态

每一个IOS应用程序都包含一个UIApplication对象,IOS系统通过UIApplication对象监控应用程序生命周期的全过程。IOS应用程序都要为UIApplication对象指定一个代理对象,并由该代理对象,处理UIApplication对象监测到的应用程序生命周期事件。

UIApplication代理对象的生命周期函数如下所示:

  • application:didFinishLaunchingWithOptions: 当应用程序载入后执行该方法;

  • applicationWillResignActive:当程序将要进入非活动状态时,调用此方法,在此期间,程序不接收消息或事件;

  • applicationDidEnterBackground:当程序被推送到后台的时候,调用此方法。如果要设置当程序进入后台仍然继续某些动作时,则在这个方法里面添加代码即可;

  • applicationWillEnterForeground:当程序从后台,将要重新回到前台的时候,调用此方法;

  • applicationDidBecomeActive:当程序进入活动状态的时候,执行该方法;

  • applicationWillTerminate:当程序将要退出时,将调用该方法。通常是用来保存数据,和一些退出前的清理工作;

接着在AppDelegate.swift文件中的各个生命周期方法中,添加print日志输出方法。当应用程序进入某个状态时,在控制台输出相关的日志,如图1-4-2所示:

图1-4-2

接着点击Xcode界面右上角的[编译并运行]按钮,打开模拟器运行该项目。此时在控制台输出相应的日志信息,如图1-4-3所示:

图1-4-3

然后依次点击[Hardward > Home]菜单命令,使模拟器返回Home Screen,此时的日志面板输出的信息如图1-4-4所示:

图1-4-4

最后在Home Screen点击应用程序的图标,再次进入应用程序界面,此时的日志面板输出的信息如图1-4-5所示:

图1-4-5

第一章连载内容回顾:

创建一个简单的iOS项目
1.1  iOS移动开发现状
1.1.1 iOS的历史
1.1.2 iOS 10的十大变化
1.1.3 iOS应用开发的八个特点
1.1.4 iOS移动开发学习方式
1.2 成为一名iOS开发者
1.2.1 硬件上的需求
1.2.2  加入Apple开发者计划
1.2.3  下载安装Xcode和模拟器
1.2.4  创建开发和发布配置文件Provisioning Profile
1.3 创建一个基本的iOS项目
1.3.1 项目的创建
1.3.2 设置项目的信息
1.3.3 设置应用的Icon图标
1.3.4 设置应用的Launch图片
1.3.5 编译并运行项目
1.4 iOS应用的生命周期
1.4.1 iOS应用程序的状态
1.4.2演示iOS应用程序的各种状态

从第二章起,您将陆续学习到iOS开发领域具体的知识点。

包括Xcode 8.0各个功能区域的使用,以及查找、替换、调试等各种实用的功能。

iPhone SE模拟器的使用,可以方便、快捷地对应用程序进行测试操作,而无需连接真实的设备。



《iOS移动开发从入门到精通》图书连载4:iOS应用的生命周期相关推荐

  1. 《iOS移动开发从入门到精通》图书连载一:如果你也想开发一款自己的APP,可以看一下这篇文

    前言:互联网+时代给自己多一个选择的机会,尝试开发一款属于自己的APP,绝对是件激动人心的事情!<iOS移动开发从入门到精通>已经上市并和大家见面.从今天起,我会将把图书的部分内容以连载的 ...

  2. 《iOS移动开发从入门到精通》图书连载5:Xcode 8的使用(上)

    微信公众号:酷课堂(ID:coolketang)独家文章,其他媒体转载请注明出处 本期导读 从今天开始,我们将要讲述的是<ios移动开发从入门到精通> 这本书的第二章内容"Xco ...

  3. 视频教程-iOS移动开发从入门到精通(Xcode11 Swift5)-iOS

    iOS移动开发从入门到精通(Xcode11 & Swift5) 15年以上IT行业工作经验.8年以上IT行业教学经验.丰富的项目经验和授课经验,授课形式不拘一格.熟悉iOS开发,网页开发.Ja ...

  4. 《iOS移动开发从入门到精通》图书连载7:iOS模拟器的使用

    酷课堂(ID:coolketang)独家文章,其他媒体转载请注明出处 本期导读 当您在使用Xcode软件开发iOS平台的应用程序时,可以使用Apple提供的iOS模拟器进行应用程序的测试.Apple提 ...

  5. pythonweb开发-Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

  6. [分享] 新书推荐 -《黑莓(BlackBerry)开发从入门到精通》 | 黑莓时光

    今天看到一本刚出版不久的书,<黑莓(BlackBerry)开发从入门到精通>,属于技术类书籍,通过 18 章的内容,介绍了BlackBerry 开发平台简介.BlackBerry 开发平台 ...

  7. python web 开发教程下载_Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

  8. python web开发-Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

  9. 【Thunder送书 | 第四期】「SAP ABAP开发从入门到精通」

    文章目录 前言 SAP系列丛书推荐 <SAP ABAP开发从入门到精通> 章节目录 送书福利 前言 Thunder送书第四期开始啦!这次活动联合机械工业出版社为大家继续带来福利,本期将赠送 ...

最新文章

  1. Linux命令篇之usermod命令和passwd命令
  2. ServiceStack 项目实例 001 建立项目结构
  3. PHP垃圾回收机制防止内存溢出
  4. Intel汇编语言程序设计学习-第二章 IA-32处理器体系结构-上
  5. [改善Java代码]性能考虑,数组是首选
  6. FreeRTOS内存管理
  7. 苹果cms资源站360影视
  8. RocketMQ源码解析-Broker的HA实现
  9. 层次分析法在高校教学评价体系中的应用(原理+实例+工具)
  10. 影音先锋 android下载地址,影音先锋手机版-影音先锋下载v5.8.2 安卓手机版-西西软件下载...
  11. Algorithms 学习笔记——1.1
  12. 2013中国旅游网站100强排行榜
  13. Glide遇到重定向url产生的bug分析以及解决
  14. mac之间快速传递文件-from-jianshu-狂奔的胖蜗牛
  15. c语言-链表-贪吃蛇
  16. 无线耳机哪个品牌好一点?真无线蓝牙耳机推荐品牌
  17. 模型论电子版教材,何处寻?
  18. Zookeeper 服务器端和客户端扩大节点数据1M大小限制
  19. 聚类(四)—— 基于密度的聚类
  20. 想要教AI一个常识真的好难,幸运的是保罗·艾伦拿钱闯进来了

热门文章

  1. 使用国密算法签名PDF文件
  2. oracle数据库纵向转横向,复杂SQL语句实现表中数据横向变纵向问题求解
  3. 根据股票代码特征分类
  4. 大数据技术技能分析大赛——第一章 python数据分析概述
  5. 【带你手把手零基础学C语言】(一)
  6. 服务器多系统ssd寿命检测,检测 SSD 剩余寿命 寿终正寝之前还能挽回数据
  7. 线上平台/线下渠道,VR营销渠道大盘点
  8. 163邮箱注册怎么用,有哪些常用的邮箱使用技巧!
  9. vs2017 15.5.x dll调试不成功问题
  10. 歌咏比赛java代码_JavaEE基础知识