前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UIApplicationDelegate

UIApplicationDelegate

作者头像
Helloted
发布2022-06-07 13:39:04
7180
发布2022-06-07 13:39:04
举报
文章被收录于专栏:Helloted

本文翻译自UIApplicationDelegate

一、预览

app delegate一直伴随着整个APP用来确保您的APP与系统或者其他APP之间交互顺利,特别地,app delegate的一些方法提供了一个响应重要改变的机会。比如,你用这些方法来响应APP的状态,比如APP从前台转向后台,进来通知。在许多场合,app delegate的方法是唯一途径来接受这些重要的通知。

Xcode为每个新建project提供了app delegate,所以你不需要自己去定义。当你的APP启动,UIKit自动创建一个app delegate实例对象用来执行一些APP自定义代码。你需要做的就是在 APP delegate里添加上你自己的代码。

app delegate是你的APP的基础对象,就如同 UIApplication 对象,app delegate是一个单例对象而且一直存在于运行时,尽管 UIApplication 对象操作大部分工作来管理APP,你通过app delegate的方法来全面地决定整个APP的行为。经过大部分协议和方法是可选的,你应该声明部分方法。

app delegate 扮演了以下关键角色

  • 它包含了APP的启动代码
  • 它会响应APP的状态改变,特别地,它会响应暂时的中断以及应用程序执行状态的变化,例如当您的应用程序从前台转换到后台时。
  • 它响应来自APP外部的通知,如低内存警告,下载完成通知等等。
  • 它决定了是否应该进行状态保护和恢复,并根据需要协助保护和恢复进程。
  • 它响应以应用程序本身为目标的事件,而不是特定于应用程序的Views或Viewcontrollers。
  • 你可以使用它来存储应用程序的中央数据对象或任何没有拥有view controller的内容。

二、开启APP

启动APP是APP整个生命循环的重要节点,在启动时,app delegate接到响应去执行自定义的初始化的代码。比如,建立数据结构,注册任何需要的服务。

一些附加的任务app delegate会在启动时间执行

三、管理状态转变

app delegate的一个主要工作就是用来响应系统提供地状态转变。每次状态发生改变,系统会调用app delegate合适的方法。每个状态都有不同的规则来规定APP应该怎么样表现,app delegate的方法就应该调整这些行为。

状态

描述

未运行(Not running)

App还未被启动或者是被终止(不管是被用户还是系统终止)

待用(Inactive)

APP已经在前台运行但是没有收到事件(尽管有可能在执行其他代码)。一个应用程序通常只会短暂处于这种状态,因为它会转换到不同的状态。一旦进入这个状态,APP应该把自己置于静止状态,期望很快就会转变到后台或活动状态。

活动(Active)

APP在前台运行,并接收事件。 这是前台应用程序的正常模式。处于活动状态的APP没有特别的限制。 这是前台APP,应该对用户作出响应。

后台(Background)

APP正在执行代码,但在屏幕上不可见。 当用户退出应用程序时,系统在暂停应用程序之前短暂地将其移至后台状态。 在其他时候,系统可能会启动应用程序到后台(或唤醒挂起的应用程序),并给它时间来处理特定的任务。 例如,系统可能会唤醒APP,以便处理后台下载,某些类型的位置事件,远程通知以及其他类型的事件。在后台状态的APP应该尽可能少的工作。需要时间来处理特定类型的事件的APP尽快应处理这些事件,并将控制权还给系统。

挂起(Suspended)

App在内存中,但不执行代码。 系统挂起在后台的App,没有任何待完成的任务。 系统可能随时清除这些被挂起的app,而不会唤醒它们为其他app腾出空间。

当状态发生改变时,下面的方法会被调用.

四、响应通知和事件

系统向app delegate发送许多不同的通知和事件,让app delegate决定如何最好地响应传入的信息并更新app。 大多数通知对应于应用程序级别的行为,可能需要您更新app的数据或用户界面或对系统更改的条件作出响应。 处理这些通知的方式取决于您的app的架构。 在许多情况下,app delegate可能只是通知其他对象(例如view controllers)需要自行更新,但在某些情况下,app delegate可能会自行完成工作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、预览
  • 三、管理状态转变
  • 四、响应通知和事件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档