使用后台任务支持应用 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
本部分中的主题展示如何通过响应具有后台任务的触发器在后台运行你自己的轻型代码。 后台任务是操作系统在后台运行的单独 JavaScript 文件。你可以使用后台任务在应用暂停或未运行时提供功能。在 JavaScript 中,你还可以在计时器上运行后台任务。
后台任务使用 Windows.UI.WebUI.WebUIBackgroundTaskInstance 命名空间来获取关于后台任务的当前实例的信息。通过使用 BackgroundTaskBuilder 对象注册后台任务。注册后台任务时将后台任务 JavaScript 文件指定为入口点。
若要快速使用后台任务,请阅读快速入门:创建和注册后台任务。
系统事件的后台任务
应用可以通过向 SystemTrigger 注册后台任务来响应系统生成的事件。应用可以使用以下任意系统事件触发器(在 SystemTriggerType 中定义),而无需处于锁屏上。
触发器名称 | 说明 |
---|---|
InternetAvailable |
Internet 变为可用。 |
NetworkStateChange |
网络更改,如开销或连接性发生更改。 |
OnlineIdConnectedStateChange |
与帐户更改关联的联机 ID。 |
SmsReceived |
安装的移动宽带设备收到一条新短信。 |
TimeZoneChange |
设备上的时区发生更改(例如,当系统为夏令时调整时钟时)。 |
有关详细信息,请参阅如何使用后台任务响应系统事件。
后台任务的条件
你可以控制后台任务何时运行,通过添加条件,甚至可以在任务触发后进行控制。在触发后,后台任务将不再运行,直至所有条件均符合为止。可以使用以下条件(由 SystemConditionType 枚举表示)。
条件名称 | 说明 |
---|---|
InternetAvailable | Internet 必须可用。 |
InternetNotAvailable | Internet 必须不可用。 |
SessionConnected | Internet 必须连接。 |
SessionDisconnected | Internet 必须断开连接。 |
有关详细信息,请参阅如何设置后台任务的运行条件。
应用程序清单要求
在应用可以成功注册后台任务前,必须在应用程序清单中声明该任务。有关详细信息,请参阅如何在应用程序清单中声明后台任务。
支持锁屏的应用的后台任务
应用可以置于锁屏上,以向用户显示一瞥即知的实时信息。以下实时触发器可用于在后台运行位于锁屏上的应用的轻型自定义代码:
控制通道: 后台任务通过使用 ControlChannelTrigger 可以使连接保持活动状态,在控制通道上接收消息。有关详细信息,请参阅如何使用控制通道触发器。(请注意,仅可以使用 C# 或 C++ 实施控制通道后台任务)。ControlChannelTrigger 在 Windows Phone 上不受支持。
计时器: 后台任务可以以 15 分钟的时间间隔运行,并且通过使用 TimeTrigger 它们可以设置为在某些时间运行。有关详细信息,请参阅如何在计时器上运行后台任务。
推送通知: 后台任务响应 PushNotificationTrigger 以接收原始推送通知。有关详细信息,请参阅如何接收原始通知。
注意 仅限 Windows 应用商店应用。用户必须首先将应用置于锁屏上,该应用才能使用这些后台任务。应用可以通过调用 RequestAccessAsync 请求锁屏访问。这会显示一个对话框,询问用户“允许”还是“不允许”你的应用位于锁屏上。每个应用只允许请求一次锁屏访问;将忽略随后对 RequestAccessAsync 的任何调用。
注意
Windows Phone 应用商店应用无需固定到锁屏,即可使用所有受支持的后台触发器。然而,电话应用必须在注册任何后台触发器类型之前调用 RequestAccessAsync。
若要确保 Windows Phone 应用在你发布更新后继续正常运行,你必须在启动已经过更新的应用时调用 RemoveAccess,然后调用 RequestAccessAsync。有关详细信息,请参阅后台任务指南(Windows 运行时应用)。
用于支持锁屏应用的系统事件触发器
注意 SystemTriggerType 枚举包含以下系统事件触发器,只有支持锁屏的应用才可以使用这些触发器。应用只有在位于锁屏上后才可以使用任意这些系统事件触发器注册后台任务。
触发器名称 | 说明 |
---|---|
UserPresent |
后台任务在用户出现后触发。 |
UserAway |
后台任务在用户离开后触发。 |
ControlChannelReset |
后台任务在控件通道初始化后触发。 |
SessionConnected |
后台任务在会话连接后触发。 |
以下系统事件触发器也用于支持锁屏的应用。这些触发器甚至可以在应用不在锁屏上时注册,从而使其可以识别用户何时将应用置于或离开锁屏上。
触发器名称 | 说明 |
---|---|
LockScreenApplicationAdded |
向锁屏中添加应用磁贴。 |
LockScreenApplicationRemoved |
从锁屏中删除应用磁贴。 |
后台任务资源限制
后台任务时轻型的。使后台执行最少可确保前台应用的最佳用户体验以及最佳电池寿命。通过对后台任务应用资源限制来实施该操作:
CPU 的使用限制如下。
CPU 使用配额 刷新时间 Windows 应用不在锁屏上 1 秒
2 小时
Windows 应用位于锁屏上 2 秒
15 分钟
Windows Phone 应用 2 秒
15 分钟
当使用电池(直流电源)运行时,后台任务还具有网络数据使用限制。此限制是网络接口所用能量的函数,因此它因设备和网络环境而异 - 但这个量可以估计。
下表描述了网络数据吞吐量属性,假定 WiFi 网络的资源限制为每数据吞吐量 1Mbps。为了估计正确的限制,请乘以连接的每秒平均 Mb 数 (Mbps)。例如,如果应用位于锁屏上,则在 10Mbps WiFi 连接条件下该应用每 2 小时可以使用 25 MB 数据。示例 WiFi 接口假定干扰最少。
刷新周期 15 分钟 2 小时 每天 数据限制(在锁屏上) 0.469 MB 不适用 45 MB 数据限制(不在锁屏上) 不适用 0.625 MB 7.5 MB 注意 当插入设备(交流电源)时,网络数据使用限制将增加,但 CPU 的使用配额仍适用。同样的,CPU 和网络资源约束由于应用的后台任务而暂停时,用户与该应用的交互仍在前台。
针对 Windows Phone 应用商店应用的其他后台任务资源约束
除了上节所述的资源约束,Windows Phone 应用商店应用上的后台任务还有以下约束。
内存约束
由于手机型号的资源约束(尤其对于内存较低的设备),Windows Phone 应用上的后台任务具有内存限制,该限制决定了后台任务可以使用的内存上限。如果你的后台任务超出该限制,它会立即终止。内存分配取决于后台任务类型以及运行任务的设备的总系统内存。在开发和测试你的应用时,应该考虑以上限制。还可以使用 MemoryManager API 查询你当前的内存使用量和限制,以便在运行时调整你的使用量。下表针对设备上不同的总系统内存量列出了指定后台任务类型的内存上限(以兆字节为单位)。
后台任务类型 | 512 MB | 1 GB | 2 GB 或更大 |
---|---|---|---|
位置 | 16 | 30 | 40 |
Bluetooth | 16 | 16 | 16 |
服务完成 | 10 | 10 | 10 |
其他后台任务 | 16 | 30 | 40 |
调试时的限制 | 30 | 40 | 50 |
内存较低的设备上带有后台任务的应用在每台设备上的限制
在内存为 512 MB 的电话上,对于可以安装在一台设备上并在任何给定时间使用后台任务的应用数量有所限制。如果超出该数量,将无法调用在 Windows Phone 上注册所有后台任务时所需的 RequestAccessAsync。
节电模式
在 Windows Phone 上,当节电模式功能启用时,如果设备未连接到外部电源且电量低于指定剩余电量,它将阻止后台任务运行。这不会阻止你注册后台任务。
维护触发器
你的应用还可以通过使用维护触发器每 15 分钟运行一次任务。维护任务仅在设备插入交流电源时运行,而无需位于锁屏上。有关详细信息,请参阅如何使用维护触发器。
适用于传感器和设备的后台任务
你的应用可以使用 DeviceUseTrigger 类从后台任务访问传感器和外围设备。你可以针对运行时间较长的操作(例如数据同步或监视)使用此触发器。与用于系统事件的任务不同,DeviceUseTrigger 任务仅在你的应用在前台运行且在其上无法设置任何条件时触发。根据该任务的运行位置(电脑或手机),DeviceUseTrigger 后台任务支持不同的 API,且受不同的策略约束。若要了解有关这些差异的详细信息,请参阅从后台任务访问传感器和设备。
某些关键设备操作(如长时间运行的固件更新)无法通过 DeviceUseTrigger 执行。此类操作仅可以在电脑上通过使用 DeviceServicingTrigger 的特权应用执行。特权应用是指由设备制造商授权执行这些操作的应用。设备元数据用于指定已指派哪个应用(如果有的话)作为设备的特权应用。有关详细信息,请参阅 Windows 应用商店设备应用的设备同步和更新。
管理后台任务
后台任务可以使用事件和本地存储向你的应用报告进度、完成和取消。你的应用还可以捕捉由后台任务引发的异常,并在应用更新过程中管理后台任务注册。有关详细信息,请参阅:
相关主题
在 Windows 8 中使用多任务的概念指南
锁屏的 UI 指南
相关的后台任务指南