应用的生命周期
Main函数入口
UIApplicationMain
- 从可用Storyboard文件加载用户界面
- 调用AppDelegate自定义代码来初始化设置
- 将app放入Main Run Loop环境中来响应和处理与用户交互产生的事件
应用程序的五种状态
- Not Running(非运行状态)
应用没有运行或被系统终止。 - Inactive(前台非活动状态)
应用正在进入前台状态,但是还不能接受事件处理。 - Active(前台活动状态)
应用进入前台状态,能接受事件处理 - Background(后台状态)
应用进入后台后,依然能够执行代码,如果有可执行的代码,就会执行代码,如果没有可执行的代码活着将可执行的代码执行完毕,应用会马上进入挂起状态。有的程序经过特殊的请求后可以长期处于Background状态。 - Suspended(挂起状态)
处于挂起的应用进入一种“冷冻”状态,不能执行代码,如果系统内存不够,系统就把挂起的程序清除掉,为前台程序提供更多的内存,应用会被终止。
AppDelegate的代理方法
作为应用程序的委托对象,AppDelegate类在应用生命周期的不同阶段会调用不同的方法。
方法 | 本地通知 | 说明 |
---|---|---|
application: didFinishLaunchingWithOptions: | UIApplicationDidFinishLaunching-Notification | 应用启动并进行初始化时会调用该方法并发出通知。这个阶段会示例化根视图控制器 |
application: DidBecomeActive: | UIApplicationDidBecomeActive-Notification | 应用进入前台并处于活动状态时调用该方法并发出通知,这个阶段可恢复UI的状态(例如游戏状态等) |
application:WillResignActive: | UIApplicationWillResignActive-Notification | 应用从活动状态进入到非活动状态时调用该方法并发出通知。这个阶段可以保存UI的状态(例如游戏状态等) |
application:DidEnterBackground: | UIApplicationDidEnterBcakground-Notification | 应用进入后台时调用该方法并发出通知。这个阶段可以保存用户数据,释放一些资源(例如释放数据库资源等) |
application:WillEnterForeground: | UIApplicationWillEnterForeground-Notification | 应用进入到前台,但是还没有处于活动状态时调用该方法并发出通知。这个阶段可以恢复用户数据 |
application:WillTerminate: | UIApplicationWillTerminate-Notification | 应用被终止时调用该方法并发出通知,但内存清除时除外。这个阶段可以释放一些数据,也可以保存用户数据。 |