1. 应用生命周期
下面简要介绍一下iOS应用的5中状态
- Not running (非运行状态)。应用程序没有运行或被系统终止。
- Inactive (前台非获得状态)。应用程序进入前台状态,但是还不能接受事件处理。
- Active (前台活动状态)。应用程序进入前台状态,能接受事件处理。
- Background (后台状态)。应用进入后台后,依然能够执行代码。如果有可执行的代码,就会执行代码,如果没有可执行的代码或者将可执行的代码执行完毕,应用会马上进入挂起状态。
- Suspended (挂起状态)。被挂起的应用进入一种“冷冻”状态,不能执行代码。如果系统内存不够,应用会被终止。
2. AppDelegate中的回调方法
在应用状态跃迁的过程中,iOS系统会回调AppDelegate中的一些方法,并发生通知,我们选取几个主要的方法介绍
- application(应用程序)。应用启动并进入初始化时会调用该方法并发生通知。这个阶段会实例化根视图控制器。
- applicationDidBecomeActive(变得活跃)。应用进入前台并处于活动状态调用该方法并发生通知。这个阶段可以恢复UI的状态。
- applicationWillResignActive(退出活动)。应用从活动状态进入非活动状态时调用该方法并发生通知。这个阶段可以保存UI的状态
- applicationDidEnterBackground(进入后台)。应用进入后台时调用该方法并发生通知。这个时候可以保存用户数据,释放一些资源(例如释放数据库资源等)
- applicationWillEnterForeground(进入前台)。应用进入前台,但是还没有处于活动状态时调用该方法并发生通知。这个阶段可以恢复用户数据
- applicationWillTerminate(应用将终止)。应用被终止时调用该方法并发生通知,但内存清除时除外。这个阶段释放一些资源,也可以保存用户数据。
3. 各场景下方法的回调
3.1 非运行状态下应用启动场景
共经历两个阶段3个状态:Not running -> Inactive -> Active.
两个阶段分别回调application和applicationDidBecomeActive
3.2 后台状态下启动场景
共经历三个阶段4个状态:Suspended -> Background -> Inactive -> Active.
- Suspended -> Background阶段 没有回调
- Background -> Inactive阶段 回调applicationWillEnterForeground
- Inactive -> Active阶段 回调applicationDidBecomeActive
3.3 点击Home键应用退出场景(应用在后台运行或挂起)
共经历三个阶段4个状态:Active -> Inactive -> Background -> Suspended.
- Active -> Inactive阶段 回调applicationWillResignActive
- Inactive -> Background阶段 没有回调
- Background -> Suspended阶段 回调applicationDidEnterBackground
3.4 点击Home键应用退出场景(应用不可用在后台运行或挂起)
共经历四个阶段5个状态:Active -> Inactive -> Background -> Suspended ->Not running.
- Active -> Inactive阶段 没有回调(这是与3.3不同之处)
- Inactive -> Background阶段 没有回调
- Background -> Suspended阶段 回调applicationDidEnterBackground
- Suspended ->Not running阶段 回调applicationWillTerminate
网友评论