如何使用维护触发器 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

了解如何在插入设备的情况下使用 MaintenanceTrigger 类在后台运行轻型代码。

你需要了解的内容

技术

先决条件

  • 本示例假定在插入设备时你已具有可以在后台运行的轻型代码以增强你的应用。本主题重点介绍 MaintenanceTrigger 类,该类与 SystemTrigger 类似,因为应用不需要位于锁屏上即可注册 MaintenanceTrigger 后台任务。有关编写后台任务类的详细信息可以在快速入门:创建和注册后台任务中找到。

说明

步骤 1: 创建一个维护触发器对象

创建新的 MaintenanceTrigger 对象。第二个参数 OneShot 指定维护任务是运行一次还是继续定期运行。如果 OneShot 被设置为 true,则第一个参数 (FreshnessTime) 会指定在计划后台任务之前需等待的分钟数。如果 OneShot 被设置为 false,则 FreshnessTime 会指定后台任务的运行频率。

注意  如果 FreshnessTime 设置为少于 15 分钟,则在尝试注册后台任务时将引发异常。

 

本示例代码会创建一个每小时运行一次的触发器:

var waitIntervalMinutes = 60;

var taskTrigger = new Windows.ApplicationModel.Background.MaintenanceTrigger(waitIntervalMinutes, false);

步骤 2: (可选)添加条件

如果需要,添加一个后台任务条件以控制任务何时运行。防止后台任务在未满足条件之前运行的条件 - 有关详细信息,请参阅 如何设置运行后台任务的条件

在此示例中,条件设置为 UserPresent 以便在用户处于活动状态时(或者用户变为活动状态时)运行维护。有关可能的后台任务条件的列表,请参阅 SystemConditionType

以下代码向维护任务生成器中添加一个条件:

var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserAway);

步骤 3: 注册后台任务

通过调用后台任务注册函数注册后台任务。有关注册后台任务的详细信息,请参阅如何注册后台任务

下面的代码将注册后台任务:

var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Maintenance background task example”;

var task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);

注意  

在 Windows Phone 应用商店应用中,你必须在尝试注册任何后台任务之前调用 RequestAccessAsync。在 Windows 上,仅需在后台任务要求应用在锁屏上才能运行的情况下进行该调用,但在手机上,你必须在每次注册任何后台任务之前调用该方法。

若要确保 Windows Phone 应用在你发布更新后继续正常运行,你必须在启动已经过更新的应用时调用 RemoveAccess,然后调用 RequestAccessAsync。有关详细信息,请参阅后台任务指南 (HTML)

注意  

从 Windows 8.1 开始,后台任务注册参数在注册时进行验证。如果任何注册参数无效,则会返回一个错误。你的应用必须能够处理后台任务注册失败的情况,例如,使用条件语句检查注册错误,然后使用其他参数值重试失败的注册。

 

备注

除非插入设备,否则将不会引发维护触发器事件。

注意  如果未插入设备,则取消当前运行的由 MaintenanceTrigger 启动的所有后台任务(cancelReason = Abort)。如果在收到后台任务已取消事件的 5 秒钟之内后台任务未取消,则会终止该任务。有关详细信息,请参阅如何处理已取消的后台任务

 

相关主题

快速入门:创建和注册后台任务

如何注册后台任务

如何使用后台任务响应系统事件

如何设置后台任务的运行条件

如何在应用程序清单中声明后台任务

如何调试后台任务

后台任务指南和清单