IOS应用程序的5中状态
jopen
9年前
1. Not Running(非运行状态)。应用没有运行或被系统终止。
2. Inactive(前台非活动状态)。应用正在进入前台状态,但是还不能接受事件处理。
3.Active(前台活动状态)。应用进入前台状态,能接受事件处理。
4.Background(后台状态)。应用进入后台后,依然能够执行代码。如果有可执行的代码,就会执行代码,如果没有可执行的代码或者将可执行的代码执行完毕,应用会马上进入挂起状态。
5. Suspended(挂起状态)。处于挂起的应用进入一种“冷冻”状态,不能执行代码。如果系统内存不够,应用会被终止。
在应用状态跃迁的过程中,iOS系统会回调AppDelegate中的一些方法,并且发送一些通知。实际上,在应用的生命周期中用到的方法和通知很多,
状态跃迁过程中应用回调的方法和本地通知
application:didFinishLaunchingWithOptions: UIApplicationDidFinishLaunchingNotification
应用启动并进行初始化时会调用该方法并发出通知。这个阶段会实例化根视图控制器
applicationDidBecomeActive: UIApplicationDidBecomeActiveNotification
应用进入前台并处于活动状态时调用该方法并发出通知。这个阶段可以恢复UI的状态(例如游戏状态等)
applicationWillResignActive: UIApplicationWillResignActiveNotification
应用从活动状态进入到非活动状态时调用该方法并发出通知。这个阶段可以保存UI的状态(例如游戏状态等)
applicationDidEnterBackground: UIApplicationDidEnterBackgroundNotification
应用进入后台时调用该方法并发出通知。这个阶段可以保存用户数据,释放一些资源(例如释放数据库资源等)
applicationWillEnterForeground: UIApplicationWillEnterForegroundNotification
应用进入到前台,但是还没有处于活动状态时调用该方法并发出通知。这个阶段可以恢复用户数据
applicationWillTerminate: UIApplicationWillTerminateNotification
应用被终止时调用该方法并发出通知,但内存清除时除外。这个阶段释放一些资源,也可以保存用户数据
为了便于观察应用程序的运行状态,我们为AppDelegate.m中的方法添加一些日志输出,具体代码如下:
@implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"%@", @"application:didFinishLaunchingWithOptions:"); …… return YES; } - (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"%@", @"applicationWillResignActive:"); } - (void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"%@", @"applicationDidEnterBackground:"); } - (void)applicationWillEnterForeground:(UIApplication *)application { NSLog(@"%@", @"applicationWillEnterForeground:"); } - (void)applicationDidBecomeActive:(UIApplication *)application { NSLog(@"%@", @"applicationDidBecomeActive:"); } - (void)applicationWillTerminate:(UIApplication *)application { NSLog(@"%@", @"applicationWillTerminate:"); } @end