iOS应用程序的常见执行生命周期是什么?
在本文中,您将了解iOS应用程序的不同执行状态。根据当前状态,您可以决定要执行的任务。应用程序可能有多种状态。
iPhone操作系统(iOS)为我们提供了应用程序的五种不同状态,如下所示:
未运行
非活动状态
活动状态
后台
挂起
iOS应用程序运行在多个状态下,称为应用程序生命周期的状态。应用程序生命周期对于iOS开发者至关重要,因为它有助于他们了解其应用程序的行为。每个iOS应用程序都会经历以下状态。
未运行 - 顾名思义,应用程序当前未运行。这意味着应用程序中没有正在执行的进程。如果应用程序被操作系统终止,它将切换到未运行状态。
非活动状态 - 当应用程序处于前台模式但未接收任何事件时。这意味着应用程序已打开,但未接收任何输入。这可能由于某些原因发生,例如您正在通话或收到消息。在此状态下,操作系统不允许我们与应用程序交互。
活动状态 - 这是应用程序处于前台模式的最常见状态。在此状态下,应用程序响应所有事件。
后台 - 顾名思义,应用程序无法交互。当您从一个应用程序切换到另一个应用程序时,第一个应用程序将转换到后台模式。当应用程序处于后台时,它可能会被操作系统本身挂起。您可以执行后台模式下的代码,但时间有限。
挂起 - 如果应用程序在后台运行但未执行任何任务,则可以将其挂起。在这种情况下,操作系统将分析应用程序的使用情况,并在需要时终止它。
对于iOS应用程序,UIApplicationDelegate是主要的入口点,在您构建并运行应用程序时执行。此协议提供了一组与其关联的默认方法。这些方法帮助我们识别应用程序的当前状态。
对于iOS开发者来说,了解这些方法的使用非常重要。
当应用程序开始运行时,UIApplicationDelegate中的某些方法会收到通知。以下是UIApplicationDelegate中可用的方法。
application didFinishLaunchingWithOptions:-> Bool - 此方法在应用程序首次启动时调用。我们可以在此方法中执行应用程序的初始设置,例如Firebase配置、推送通知和位置访问权限、库设置等。相同的方法用于设置我们的第一个窗口以加载。
applicationWillEnterForeground - 当应用程序从后台模式进入前台模式时,此方法将被执行。在此方法中,您可以执行一些操作,例如继续动画、恢复任务、恢复下载进程等。
applicationDidBecomeActive - 此方法用于执行任务,例如当应用程序变为活动状态并当前处于前台模式时更新主题。
applicationWillResignActive - 这将通知您您的应用程序即将变为非活动状态。应用程序不会进入后台模式,而是在非活动模式下停留在屏幕上。如果您接听电话等,可能会发生这种情况。
applicationDidEnterBackground - 如果应用程序由于任何原因进入后台,此方法会通知您执行指定的操作,例如暂停动画、暂停同步或停止不再需要的任何繁重操作。
applicationWillTerminate - 如果应用程序即将被操作系统从内存中终止或杀死,此方法将通知您在代码中执行任何最终清理工作。
在didFinishLaunchingWithOptions方法中,我们可以放置在应用程序启动时运行的代码。当用户需要登录才能使用应用程序时,我们可以检查UserDefaults以查看用户是否已登录到应用程序。登录后,用户可以导航到主屏幕。否则,用户可以导航到登录屏幕。
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { /* 1. Override this function to perform the tasks that need to be performed on app launch. 2. Set up Firebase configuration, library configuration, app theme, etc. */ return true } func applicationWillResignActive(_ application: UIApplication) { /* You can pause ongoing processes like timers, animation, graphics, location access, etc. */ } func applicationDidEnterBackground(_ application: UIApplication) { /* You can invalidate running timers, save critical information of an user, released shared resources, etc. */ } func applicationWillEnterForeground(_ application: UIApplication) { // Resume the actions that are paused in background mode. } func applicationDidBecomeActive(_ application: UIApplication) { // You can refresh the user interface, restarting the actions that were paused when the app goes in inactive mode. } func applicationWillTerminate(_ application: UIApplication) { // You can save critical information in the app. } }
结论
当您在移动设备上打开应用程序时,会发生很多事情。iOS操作系统是最直观和用户友好的操作系统之一。了解移动应用程序的生命周期对于成功管理任何类型的应用程序至关重要。经验丰富的开发者将能够利用生命周期的强大功能。