iOS应用的生命周期
iOS应用的生命周期是指从应用程序的启动,到应用程序结束整个阶段的全过程。
整个iOS应用的生命周期包含了各种状态,有时系统会从应用的一种状态切换至另一种状态来响应系统发生的事件。例如当应用程序崩溃、电话打入、或其它中断应用的事件发生时,当前运行的应用程序会通过切换状态来响应突发。
作为iOS开发者,需要熟知iOS应用的生命周期,在不同的生命周期做出相应的操作,比如在用户按下Home键退出程序时,进行一些数据的备份操作。
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应用程序都包含一个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模拟器的使用,可以方便、快捷地对应用程序进行测试操作,而无需连接真实的设备。