美文网首页
应用生命周期及AppDelegate的回调方法

应用生命周期及AppDelegate的回调方法

作者: 王灵 | 来源:发表于2019-02-20 23:06 被阅读0次

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

相关文章

网友评论

      本文标题:应用生命周期及AppDelegate的回调方法

      本文链接:https://www.haomeiwen.com/subject/gfbkyqtx.html