iOS应用程序生命周期


/*
 1.Not Running(未运行):应用程序未启动或者应用程序被系统终止。
 
 2.Inactive(不活动):程序在前台运行,但不能接收事件处理。当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。
 
 3.Active(活动):程序在前台运行且能接收到事件。这是应用在前台运行时所处的正常状态。
 
 4.Background(后台):应用处在后台运行,并且还在执行代码。大多数将要进入Suspended状态的应用,会短暂进入此状态。如果应用请求更多额外的执行时间,该应用会在此状态保持更长一段时间。如果一个应用直接从Not Running进入到Background状态,中途不会经过Inactive状态。
 
 5.Suspended(挂起):应用处在后台,并且没有执行任何代码。系统会自动将应用转入该状态,并且不会发出任何通知。当处在该状态时,应用依然驻留内存,但是不执行任何程序代码。
 */
#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

/*
 应用程序启动时自动调用该方法,开发者可以在该方法中执行初始化相关的代码
 */
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   
    NSLog(@"应用程序启动时自动调用该方法,开发者可以在该方法中执行初始化相关的代码");
    return YES;
}

/*
 应用程序正要从前台离开时将会调用该方法
 */
- (void)applicationWillResignActive:(UIApplication *)application
{
    NSLog(@"应用程序正要从前台离开时将会调用该方法");
}

/*
 应用程序正处于background状态,且随时可能进入Suspended状态时将会调用该方法,要设置后台继续运行,则在这个函数里面设置即可
 */
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSLog(@"应用程序正处于background状态,且随时可能进入Suspended状态时将会调用该方法");
}

/*
 应用程序正从后台转入到前台运行状态,但是暂时还没有达到Active状态时将会调用该方法
 */
- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"应用程序正从后台转入到前台运行状态,但是暂时还没有达到Active状态时将会调用该方法");
}

/*
 应用程序在转入前台,并进入活动状态时将会调用该方法
 */
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSLog(@"应用程序在转入前台,并进入活动状态时将会调用该方法");
}

/*
 该应用程序即将被终止时调用该方法,如果应用程序当前处于Suspended状态,此方法不会被调用。当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作
 */
- (void)applicationWillTerminate:(UIApplication *)application
{
    NSLog(@"该应用程序即将被终止时调用该方法,如果应用程序当前处于Suspended状态,此方法不会被调用");
}
@end

当应用启动时,将从Not Running状态进入到Active状态或者直接进入后台运行。进入Active状态时的中间会先短暂进入Inactive状态。在程序启动时,系统会创建一个进程和一个主线程,在主线程中调用main()函数,并为UIApplication设置应用代理类等。当应用程序初始化并准备进到前台运行之前的大部分工作都在main()函数中完成。

如果需要确定应用是进入了前台还是将进入Background状态,可以在application:didFinishLaunchingWithOptions:方法中判断UIApplication对象的UIApplicationState属性,如果应用进入了前台,则属性为值为UIApplicationStateInactive,如果进入了Background状态,则该属性值为UIApplicationStateBackground状态。

当用户按下home键,锁屏键或者系统启动另一个应用时,前台应用首先切换到Inactive状态,然后切换到Background状态,系统会自动调用applicationWillResignActive:和applicationDidEnterBackground:方法。当applicationDidEnterBackground:方法执行完成后,大部分应用会在不久之后转入Suspended状态。对于请求特定任务的应用,或者请求需要额外执行时间的应用,可能会执行更长的一段时间。

你可能感兴趣的:(iOS应用程序生命周期)