每个IOS应用包含一个UIApplication对象,系统通过UIApplication类监控应用程序生命周期全过程。每一个UIApplication对象有一个代理对象,并由该代理处理UIApplication对象检测到的应用程序生命周期事件。
每个IOS应用程序有5种状态:
1、not running:程序还没有启动。
2、Inactive:程序在前台运行,但并不接收事件。
3、Active:程序在前台运行,并且接收事件。
4、Background:程序处在后台,并且还在执行代码。如果一个应用要求启动时直接进入后台运行,这样的应用会直接从Not Running状态进入Background状态,不会经过Inactive状态。
5、Suspended:程序处在后台,并且已停止执行代码。当系统发生低内存警告时,系统会将处在Suspended状态的应用清除内存。
UIApplication代理类与生命周期相关的函数
1、- (void)applicationWillResignActive:(UIApplication *)application;
当应用程序将要进入非活动状态执行。
2、- (void)applicationDidBecomeActive:(UIApplication *)application;
当应用程序进入活动状态执行。
3、- (void)applicationDidEnterBackground:(UIApplication *)application
当程序被推送到后台的时候调用。
4、- (void)applicationWillEnterForeground:(UIApplication *)application
当应用从后台将要重新回到前台时候调用。
5、- (void)applicationWillTerminate:(UIApplication *)application;
当程序将要退出时被调用。这个需要设置UIApplicationExitsOnSuspend的键值为YES,ios5设置Application does not run in background 的键值为YES。
6、- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;
如果应用程序分配内存太多,操作系统会终止运行该应用程序,在终止运行前会执行该方法。
7、- (void)applicationDidFinishLaunching:(UIApplication *)application;
当程序载入后执行
8、- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
当打开URL时执行。
UIViewController生命周期
1、- (void)loadView;
用于加载视图资源并初始化视图。
2、- (void)viewWillUnload和- (void)viewDidUnload
用于释放视图资源。
3、- (void)viewWillAppear:(BOOL)animated;
用于将要加载出视图
4、- (void)viewDidAppear:(BOOL)animated;
表示视图出现
5、- (void)viewWillDisappear:(BOOL)animated;
表示视图将要消失
6、- (void)viewDidDisappear:(BOOL)animated;
表示视图已经消失。