iOS_应用的生命周期,AppDelegate中方法简介

一、先简单介绍一下iOS应用的5中状态:


(1)Not Running (非运行状态)。应用没有运行或被系统终止。

(2)Inactive (前台非活动状态)。应用正在进入前台状态,但是还不能接收事件处理。

(3)Active (前台活动状态)。应用进入前台状态,可以接收事件处理。

(4)Background (后台状态)。应用进入后台后,依然能够执行代码。如果有可执行的代码,就会执行代码,如果没有可执行的代码或者将可执行的代码执行完毕,应用马上进入挂起状态。

(5)Suspended (挂起状态)。处于挂起的应用进入一种“冷却”状态,不能执行代码。如果系统内存不够,应用会被终止。


二、在应用状态跃迁的过程中,iOS系统会回调AppDelegate中的一些方法,并发送一些通知。具体如下:


/*
 应用启动并进行初始化是会调用该方法并发出通知。这个阶段会实例化根视图控制器,这也是为什么在这个方法里写一些设置跟控制器方法的原因。(当你不用Storyboard,纯代码写控制器的时候,需要在这里写一个根控制器)
 发出的本地通知:UIApplicationDidFinishLaunchingNotification
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSLog(@"application:didFinishLaunchingWithOptions");
    return YES;
}

/*
 应用进入前台并处于活动状态时调用该方法并发出通知。这个阶段可以恢复UI的状态(例如游戏状态等)
 发出的本地通知:UIApplicationDidBecomeActiveNotification
*/
- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"applicationDidBecomeActive");
}

/*
 应用进入后台是调用该方法并发出通知。这个阶段可以保存用户数据,释放一些资源(列如释放数据库资源等)
 发出的本地通知:UIApplicationDidEnterBackgroundNotification
 */
- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"applicationDidEnterBackground");
}

/*
 应用进入到前台,但是还没有处于活动状态时调用该方法并发出通知。这个阶段可以恢复用户数据。
 发出的本地通知:UIApplicationWillEnterForegroundNotification
 */
- (void)applicationWillEnterForeground:(UIApplication *)application {
    NSLog(@"applicationWillEnterForeground");
}

/*
 应用从活动状态进入到非活动状态时调用该方法并发出通知。这个阶段可以保存UI的状态(例如游戏状态等)
 发出的本地通知:UIApplicationWillResignActiveNotification
 */
- (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"applicationWillResignActive");
}

/*
 应用被终止时调用该方法并发出通知,但内存清楚时除外。这个阶段释放一些资源,也可以保存用户数据。
 发出的本地通知:UIApplicationWillTerminateNotification
 */
- (void)applicationWillTerminate:(UIApplication *)application {
    NSLog(@"applicationWillTerminate");
}


三、下面我就以一个简单APP来演示一下,更直观的看下这些方法在什么时候调用的:


(1)在Xcode运行程序:


得到这两个输出,APP在运行的时候,先调用实例化根控制器的方法,然后进入前台,处于活跃状态。


(2)在模拟器上按HOME键,模拟程序进入后台,得到下面的两个输出:


这输出可以看出,app在进入后台调需要用两个方法,一个是app从活动状态到非活动状态,然后才是进入后台的方法。


(3)点击模拟器上APP图标,把他从后台唤醒,又会得到两个输出:


先调用从后台进入前台的方法,然后才会调用进入活动状态的方法。


(4)双击HOME,模拟推掉进程


这次只有一个输出:



但是,当把APP推掉之后,会有下面两个输出:



一个完整的生命周期基本就是这样,如果想进一步了解的同学可以把代码考过去自己测试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值