管理应用程序的生命周期
概览
When your app’s state changes, UIKit notifies you by calling methods of the appropriate delegate object:
(当您的应用程序状态发生变化是,UIKit会调用适当的委托对象的方法通知您。)
- In iOS 13 and later, use UISceneDelegate objects to respond to life-cycle events in a scene-based app.
(在 iOS 13 及更高版本中,使用UISceneDelegate对象来响应基于场景的应用程序中的生命周期。) - In iOS 12 and earlier, use the UIApplicationDelegate object to respond to life-cycle events.
(iOS 12和更早版本中,使用UIApplicationLegate对象来响应生命周期事件。)
响应基于场景的生命周期事件
如果您的应用程序支持场景,UIKit会为每个场景提供单独的生命周期事件。场景表示应用程序在设备上运行的UI界面的一个实例。用户可以为每个应用程序创建多个场景,并分别显示和隐藏它们。因为每个场景都有自己的生命周期,所以每个场景都可以处于不同的执行状态。例如,一个场景可能位于前景中,而其他场景可能位于背景中或被悬挂。
Note
Scene support is an opt-in feature. To enable basic support, add the UIApplicationSceneManifest key to your app’s Info.plist file as described in Specifying the Scenes Your App Supports
.
场景支持是一个选择加入功能。要启用基本支持,请将UIApplicationSceneManifest键添加到应用程序的Info.plist文件中,如“指定应用程序支持的场景”中所述。
下图显示了场景的状态转换。当用户或系统为您的应用程序请求新场景时,UIKit会创建它并将其置于未附加状态。用户请求的场景快速移动到前景,并显示在屏幕上。系统请求的场景通常移动到后台,以便它可以处理事件。例如,系统可能会在后台启动场景来处理位置事件。当用户关闭应用程序的用户界面时,UIKit会将关联场景移动到后台状态,并最终移动到暂停状态。UIKit可以随时断开背景或悬浮场景的连接,以回收其资源,将该场景恢复到未连接的状态。
使用场景转换执行以下任务:
- 当UIKit将场景连接到您的应用程序时,请配置场景的初始UI并加载场景所需的数据。
- 过渡到前台活动状态时,请配置UI并准备与用户进行交互。
- 退出前台活动状态后,保存数据并降低应用程序的行为。
- 进入后台状态后,完成关键任务,释放尽可能多的内存,并为应用快照做准备。
- 断开场景时,清理与场景关联的所有共享资源。
- 除了与场景相关的事件外,您还必须使用UIApplicationDelegate对象对应用程序的启动做出响应。
响应基于应用的生命周期事件
在iOS 12及更低版本中,以及在不支持场景的应用程序中,UIKit会将所有生命周期事件传递给UIApplicationDelegate对象。 应用程序代理管理您所有应用程序窗口,包括在单独屏幕上显示的窗口。 结果,应用程序状态转换会影响应用程序的整个UI,包括外部显示器上的内容。
下图显示了涉及应用程序委托对象的状态转换。 启动后,系统会将应用程序置于非活动状态或后台状态,具体取决于UI是否将显示在屏幕上。 启动到前台时,系统会自动将应用程序转换为活动状态。 之后,状态会在活动状态和后台之间波动,直到应用终止。
使用应用程序转换执行以下任务:
- 在启动时,初始化应用程序的数据结构和UI。
- 在激活时,完成对UI的配置并准备与用户进行交互。
- 停用后,保存数据并降低应用程序的行为。
- 进入后台状态后,完成关键任务,释放尽可能多的内存,并为应用快照做准备。
- 终止时,立即停止所有工作并释放任何共享资源。