iOS应用程序生命周期问题

首先应该明确的是iOS程序的几种运行状态:

Not running  未运行  程序没启动
Inactive          未激活        程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态
Active             激活           程序在前台运行而且接收到了事件。这也是前台的一个正常的模式
Backgroud     后台           程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。时间到之后会进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态
Suspended    挂起           程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。

激活自然不用说,未激活是个什么东西?举例来说,按下home键,锁屏,拉下状态栏,进入控制中心等等都会进入未激活状态.这涉及到响应中断的问题,这里不做过多阐述


程序之间状态的切换如下图:




同时,对于不同的状态改变,iOS系统提供了相关的回调函数:

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application 
- (void)applicationDidEnterBackground:(UIApplication *)application
- (void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationWillTerminate:(UIApplication *)application
- (void)applicationDidFinishLaunching:(UIApplication*)application

对于面试中问到的关于声明周期的问题,能够将上述内容表达清楚便可以了.

涉及到包括应用程序启动/关闭流程,main函数的作用,程序中断和后台运行的问题可参照下列文章:


官方文档:https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW20

相关博文:http://blog.csdn.net/totogo2010/article/details/8048652



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值