第四天-管理你的应用程序的生命周期

管理你的应用程序的生命周期

了解应用程序代理如何管理你的应用程序的高级行为。(Understand how the app delegate manages your app's high-level behavior.)

总览

UIKit程序总是处于这五种状态之一,如图1所示。程序从未运行开始。当用户明确启动了程序,应用程序在进入活动状态前会短暂的移动到非活动状态。(一个活动的应用程序出现在屏幕上被称为前台程序。)退出一个活动的应用程序会将它移出屏幕和转入背后状态,此状态下,系统会在很短的时间后暂停该状态。系统可以自行决定终止已暂停的程序,并将它恢复到未运行状态。(UIKit apps are always in one of five states, which are shown in Figure 1. Apps start off not running. When the user explicitly launches the app, the app moves briefly to the inactive state before entering the active state. (An active app appears onscreen and is known as a foreground app.) Quitting an active app moves it offscreen and into the background state, where it stays until the system suspends it a short time later. At its discretion, the system may quietly terminate a suspended app, returning it to the not running state.)

Figure 1

你的应用程序的状态决定了它能的得到什么样的系统资源。因为活动状态的应用程序在屏幕上是可见的,它必须要回应用户交互,他们在使用系统资源上拥有优先权。后台程序在屏幕上是不可见的,因此,在获取系统资源上受到更多的限制,并获得有限的运行时间。(Your app’s current state defines what system resources are available to it. Because active apps are visible onscreen and must respond to user interactions, they have priority when it comes to using system resources. Background apps are not visible onscreen, and therefore have more limited access to system resources and receive limited execution time.)

管理时间生命周期(Manage Life Cycle Events)

当您的应用程序从一种状态转换到另一种状态时,UIKit会通知您的应用程序委托对象 - 符合UIApplicationDelegate协议的对象。使用您的应用程序委托来修改您的应用程序的行为以匹配其新状态。例如,从非运行状态转移到非活动状态时,处理准备运行应用程序所需的启动时任务。(When your app transitions from one state to another, UIKit notifies your app delegate object—an object that conforms to the UIApplicationDelegate protocol. Use your app delegate to modify your app's behavior to match its new state. For example, when moving from the not running to inactive state, handle the launch-time tasks needed to prepare your app to run.)
系统通知你的程序委托有关以下转换:(The system notifies your app delegate about the following transitions:)

管理行为事件(Manage Behavioral Events)

你的应用程序委托也回应一些其它重要的事件:(Your app delegate also responds to some other important events:)

  • 减少你的应用程序使用内存量。查看响应内存警告Memory warnings. Reduce the amount of memory your app uses; see Responding to Memory Warnings.)
  • 时间发生改变。更新你的应用的时间敏感特性。(Time changes. Update time-sensitive features of your app.)
  • 受保护的数据变的可用或不可用。当用户锁住或解锁设备时保护数据。(Protected data becomes available/unavailable. Manage files when the user locks or unlocks the device.)
  • 状态恢复。恢复你的应用程序的UI到之前的状态,表现你的应用程序永不停止运行;参看在发布中保留应用的UIState restoration. Restore your app’s UI to its previous state, giving the appearance that your app never stopped running; see Preserving Your App's UI Across Launches.)
  • 切换任务。 继续在另一台设备上启动任务。(Handoff tasks. Continue tasks started on another device.)
  • 打开网址。 接收并打开发送到您的应用的网址。(Open URLs. Receive and open URLs sent to your app.)
  • 应用程序间通信。 从配对的watchOS应用接收数据。 (Inter-app communication. Receive data from a paired watchOS app.)
  • 文件下载。使用NSURLSession对象接收你的应用程序下载的文件。(File downloads. Receive files that your app downloaded using a NSURLSession object.)

尽管应用委托是你处理生命周期事件最优先级的位置,但是它不是唯一的位置。大部分的事件,UIKit也可以产生任何对象可以观察的通知。有关您可以观察的与应用程序相关的通知列表,请参阅UIApplication。有关用于处理事件的方法的更多信息,请参阅UIApplicationDelegate。(Although the app delegate is the primary place where you handle life cycle events, it is not the only place. For most events, UIKit also generates notifications that any object can observe. For a list of app-related notifications that you can observe, see UIApplication. For more information about the methods you use to handle events, see UIApplicationDelegate.)

话题

生命周期循环事件(Life Cycle Events)

响应程序启动

初始化爹程序和准备它开始运行。(Initialize your app and prepare it to run.)

为你的程序在前台运行做准备

配置你的程序出现在屏幕上。(Configure your app to appear onscreen.)

为你的程序在后台运行做准备

为你的程序暂停做准备。(Prepare your app to be suspended.)

行为事件(Behavioral Events)

响应内存警告

当系统要求这样做时释放内存。(Free up memory when asked to do so by the system.)

通过发布保留应用的用户界面

在系统终止后,将您的应用程序恢复到之前的状态。(Return your app to its previous state after it is terminated by the system.)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容