美文网首页
管理应用生命周期

管理应用生命周期

作者: singmiya | 来源:发表于2018-06-05 10:21 被阅读21次

    【译】为避免撕逼,提前声明:本文纯属翻译,仅仅是为了学习,加上水平有限,见谅!

    理解应用委托如何管理应用高层次的行为。

    概述

    UIKit应用总是处于图1显示的五个状态其中之一。应用从未运行(Not Running)状态开始。当用户启动应用时,应用在进入激活(Active)状态之前会进入短暂的闲置(Inactive)状态。(激活中的应用会在屏幕上出现并且被称为前台程序。)退出激活的应用会将其移出屏幕并进入后台(Background)状态,应用会在这里一直保持到一段时间后系统将其挂起。系统会不可察的自行将挂起的应用结束掉,并把它设置为未运行(Not Running)状态。

    图1 UIKit应用的执行状态

    应用的当前状态限定了什么系统资源对其是可用的。由于处于激活(Active)状态的应用在屏幕上显示且必须想用用户交互,所以当涉及到系统资源的使用时它们有优先权。处于后台(Background)状态的应用不在屏幕上显示,因此在访问系统资源时就有诸多限制此外在后台的运行时间也有限制。

    管理事件生命周期

    当你的应用从一种状态变为另一种的时候,UIKit会通知应用的委托对象——一个遵守UIApplicationDelegate协议的对象。使用应用委托去改变应用行为以匹配应用的新状态。例如当从未运行(Not Running)状态进入到闲置(Inactive)状态时,必须处理启动时间任务为应用的运行做好准备。

    系统会通知应用委托如下变化:

    • 启动(Launch)。应用会从未运行(Not Running)状态变为闲置(Inactive)状态或者后台(Background)状态。使用这个变化为应用运行做准备;请看Responding to the Launch Of Your App
    • 激活(Activation)。应用从闲置状态变为激活状态。准备让应用在前台运行并在屏幕上显示;请看Preparing Your App to Run in the Foreground
    • 失活(Deactivation)。应用从激活状态进去闲置状态。让应用闲置下来,也许仅仅是暂时的;请看Preparing Your App to Run in the Background
    • 后台执行(Background execution)。应用从闲置状态或者未运行状态进入后台状态。当在幕后运行的时候,准备并只处理必要的任务。请看Preparing Your App to Run in the Backgound
    • 终止(Termination)。应用从运行状态进入未运行状态。(当挂起的应用终止时不会进行通知。)取消所有任务并准备退出;请看applicationWillTerminate

    管理行为事件

    应用委托也会响应一些其他的重要事件:

    • 内存告警(Memory warnings)。降低应用内存实用量;请看响应内存告警
    • 时间变化(Time changes)。更新应用的时效特性。
    • 受保护的数据可用/不可用(Protected data becomes available/unavailable)。在用户锁屏或者不锁屏的时候管理文件。
    • 状态复位(State restoration)。恢复应用应用上一个状态下的UI,给人的感觉就像你的应用从没有暂停过;请看Preserving Your App's UI Across Launches
    • 切换任务(Handoff tasks)。在另一个设备上继续任务。
    • Open URLs。接收并打开发送到应用中URLs。
    • 应用间通讯(Inter-app communication)。从配对的watchOS应用获取数据
    • 文件下载(File download)。接收应用使用NSURLSession对象下载的文件。

    尽管应用委托是你处理时间生命周期的主要地方,但它不是仅有的地方。对于大多数时间,UIKit还可以生成任何对象都可以监听到的通知。你可以监听到的应用相关的通知列表,请看UIApplication。关于用来处理事件的方法的更多信息,请看UIApplicationDelegate。

    话题

    事件生命周期

    响应应用启动

    初始化应用并准备运行。

    准备应用在前台运行

    配置应用在屏幕上显示

    准备应用在后台运行

    准备把应用挂起

    行为事件

    响应内存告警

    当系统要求这样做时释放内存。

    通过启动过程保存应用UI

    当应用被系统结束后将其返回到之前的状态。

    相关文章

      网友评论

          本文标题:管理应用生命周期

          本文链接:https://www.haomeiwen.com/subject/zjhpsftx.html