UIApplication 介绍

1965次阅读  |  发布于5年以前

UIApplication 介绍

UIApplication 的核心作用是提供了 iOS 程序运行期间的控制和协作工作。

每一个程序在运行期必须有且仅有一个 UIApplication(或则其子类)的一个实例。在程序开始运行的时候,UIApplicationMain 函数是程序进入点,这个函数做了很多工作,其中一个重要的工作就是创建一个 UIApplication 的单例实例。在你的代码中你,你可以通过调用 [UIApplication sharedApplication] 来得到这个单例实例的指针。

UIApplication 的一个主要工作是处理用户事件,它会起一个队列,把所有用户事件都放入队列,逐个处理,在处理的时候,它会发送当前事件 到一个合适的处理事件的目标控件。此外,UIApplication 实例还维护一个在本应用中打开的 window 列表(UIWindow 实例),这样它就 可以接触应用中的任何一个 UIView 对象。UIApplication 实例会被赋予一个代理对象,以处理应用程序的生命周期事件(比如程序启动和关闭)、系统事件(比如来电、记事项警告)等等。

UIApplicaion 生命周期

一个 UIApplication 可以有如下几种状态:

常见的代理方法有

  1. (void)applicationWillResignActive:(UIApplication *)application

    说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了

  2. (void)applicationDidBecomeActive:(UIApplication *)application

    说明:当应用程序入活动状态执行,这个刚好跟上面那个方法相反

  3. (void)applicationDidEnterBackground:(UIApplication *)application

    说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可

  4. (void)applicationWillEnterForeground:(UIApplication *)application

    说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。

  5. (void)applicationWillTerminate:(UIApplication *)application

    说明:当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要设置 UIApplicationExitsOnSuspend 的键值。

  6. (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

    说明:iPhone 设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止

  7. (void)applicationSignificantTimeChange:(UIApplication*)application

    说明:当系统时间发生改变时执行

  8. (void)applicationDidFinishLaunching:(UIApplication*)application

    说明:当程序载入后执行

下面是一个用于展示整个 App 生命周期的示意图:

UIApplication-Lifecycle

UIApplication Background Task

参考资料:

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8