iOS应用程序声明周期

原创 2015年07月10日 10:50:36

iOS 应用程序生命周期

1、       程序生命周期

任何应用程序都有自己的生命周期,iOS应用程序也不例外。当用户点击“App图标”后,便开始了iOS应用程序的生命周期,包括以下几个阶段:

1)     执行main函数,在main函数中开启应用程序的主线程,并执行UIApplicationMain函数,该函数是iOS程序的入口点;

2)     在UIApplicationMain执行过程中,此函数会根据principalClassName和delegateClassName实例化UIApplication和UIApplicationDelegate对象,将设置UIApplication的delegate属性值为刚刚实例化的UIApplicationDelegate对象,并开启主线程的事件循环;

3)     UIApplication对象会给delegate对象发送不同的消息,以进行事件的处理;

4)     程序终止;

 

 

在应用程序启动过程中涉及了以下对象,那么这些对象之间有什么关系呢?

1)     UIApplication

UIApplication是应用程序的核心,每一个程序在运行期间必须有且仅有一个UIApplication(或子类)的一个实例;该实例接受事件,并把所有用户事件放入事件队列,逐个处理,并把部分事件转交给代理对象;

2)     UIApplicationDelegate

UIApplication的代理对象,负责管理应用程序的生命周期,接受相应的系统事件;

3)     UIWindow

UIWindow是一种特殊的UIView,通常一个应用程序只有一个UIWindow实例(keyWindow,用来接受键盘以及非触摸类事件的UIWindow,在程序的生命周期中只能有一个keyWindow),但可以手动创建多个UIWindow实例;UIWindow的主要作用是:

a)      提供一个区域来显示视图;

b)     将事件分发给视图;

c)      与UIViewController协同工作,方便设备的旋转等;

4)     UIViewController

UIViewController是iOS顶层视图的载体以控制器,用户与程序界面的交互都是由UIViewController来控制的。UIViewController管理着UIView的生命周期以及资源的加载和释放。

 

 

 

2、       程序状态

iOS应用程序的状态有:

1)     Not running,程序未启动;

2)     Inactive,未激活,程序在前台运行,不过没有接收到事件;

3)     Active,激活,程序在前台运行,并且接收到了事件;

4)     Background,后台,程序在后台运行(可以执行代码),大多数程序在进入这个状态后会停留一段时间,之后就会进入挂起(suspended)状态;

5)     Suspended,挂起,程序在后台不能执行代码,当系统内存过低时,系统就会把挂起的程序清掉;

 


2.1、应用程序进入前台


在应用程序中,如果采用采用资源文件(如storyboard,xib等)描述主界面UI元素,则会在Firstinitialization阶段,初始化并设置这些元素;

如果没有采用资源文件(如storyboard,xib等)描述主界面UI元素,则需要在application:didFinishLaunchWithOptions:方法中,需要进行以下操作:

1)     显示实例化UIWindow对象;

2)     设置UIWindow的根控制器;

3)     使UIWindow对象成为keyWinodw,并可见;

2.2、应用程序进入后台

应用程序进入后台一般有两种方式:一是,点击“Home键”返回;二是,用户切换程序;

 

 

2.3、应用程序响应中断


当中断发生时,我们应该怎么办?

1)     应该在applicationWillResignActive:方法中可能需要进行以下处理:

l  停止timer和其他周期性的任务;

l  停止任何正在运行的请求;

l  暂停视频的播放;

l  暂停游戏;

l  减少OpenGL Es的帧率;

l  挂起任何分发的队列和不重要的操作队列;

2)     当程序回到active状态,需要在applicationDidBecomeActive方法中恢复上面的任务,如继续分发队列,提高OpenGLES的帧率等;

2.4、应用程序返回前台


当应用程序处于挂起状态时,它是不能执行任何代码的。因此它不能处理在挂起期间发过来的通知,如设备方向改变等,在程序返回后台或前台时,程序都需要处理这些通知。

2.5、应用程序终止

当系统要主动终止应用前,这个方法让你的应用知道它马上要被干掉了并且将从内存完全清除掉。你应该使用这个方法来执行任何你的应用最后的清理工作,比如释放共享资源,保存用户数据,使timers失效等,但是该方法内不宜执行较耗时的操作。

当用户主动关闭应用程序时,该方法并不会调用。

3、       UIViewController生命周期

当一个视图控制器被创建,并显示在屏幕上时,与加载视图相关的方法调用顺序如下:

1)     loadView,由于视图控制器加载视图时采用懒加载方式,所以当视图控制器的视图为空时,就会调用该方法;如果我们需要自定义视图控制器的视图,则需要重写该方法;

2)     viewDidLoad,视图载入内存完成,在该方法可以进行自定义数据或创建其它控件;

3)     viewWillAppear,只要视图即将展现在屏幕时(如视图切换),该方法就会被调用;因此,该方法可能会被调用多次;

4)     viewDidAppear,视图已在屏幕上渲染完成。

当一个视图被移除屏幕时,与视图相关的函数执行顺序如下:

1)     viewWillDisappear

2)     viewDidDisappear

至于viewDidUnload方法,在内存足够的情况下,视图会一直保存在内存中;而在会在发生内存警告的时候,如果该视图不是当前屏幕上正在显示的视图,viewDidUnload将会被执行。本视图的所有姿势图将被销毁,以释放内存。此时,开发者需要手动对viewLoad、viewDidLoad等方法中创建的对象释放内存。当视图再次显示在屏幕时,这些方法再次被调用,以便再次构造视图。

参考资料:

http://blog.csdn.net/totogo2010/article/details/8048652

http://blog.csdn.net/huifeidexin_1/article/details/7566226

IOS应用程序声明周期

iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受...

IOS 应用程序的声明周期 即相关的系统方法介绍

1 前言IOS 4之后提供了后台处理,在后台运行的应用程序,在一些情形下甚至可以在用户按下Home按钮之后在后台运行。2详述IOS可以在用户按下Home按钮后将应用程序添加到暂停状态。这种暂停执行的状...
  • nihaowe
  • nihaowe
  • 2013年06月08日 15:23
  • 374

UIApplicationDelegate详解 -- iOS应用程序周期

每 个iPhone应用程序都有一个UIApplication,UIApplication是iPhone应用程序的开始并且负责初始化并显示 UIWindow,并负责加载应用程序的第一个UIView到UI...

iOS应用程序的生命周期

1.iOS应用程序的状态有五种,分别如下: 1)Not running:app还没有运行 2)Active:app运行在foreground和正在接收事件 3)Inactive:app运行在foreg...

IOS应用程序生命周期详解

第一、 IOS应用程序的五种状态: 1. Not running:应用还没有启动,或者应用正在运行但是途中被系统停止。 2. Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行...

IOS应用程序生命周期

今天开启了iOS新篇章,初步了解了iOS的开发过程,下面说一说iOS开发前需要知道的一个基本知识。 ios应用程序的生命周期 1.首先我们来看一下应用程序的状态 not running  未运...

iOS应用程序执行的生命周期

main函数探究 在iOS项目中有一个main.m的文件,它是程序的入口类,代码如下: #import #import "AppDelegate.h" int main(int ar...

深度解析iOS应用程序的生命周期

http://www.csdn.net/article/2015-06-23/2825023/2 iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,...

深度解析iOS应用程序的生命周期

iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些基本infrastructure给所有App来运行,而你提供自己编写的代码来定制App的外观...

iOS应用程序生命周期&启动周期函数

—程序的生命周期         a.程序的生命周期是指应用程序启动到应用程序结束整个阶段的全过程         b.每一个IOS应用程序都包含一个UIApplication对象,IOS系统通过该U...
  • Theshy
  • Theshy
  • 2015年09月09日 13:20
  • 175
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS应用程序声明周期
举报原因:
原因补充:

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