如何使用后台任务响应系统事件 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
了解如何创建响应系统事件触发器的后台任务。 Windows 应用商店应用(即使不在前台)通过将轻型自定义代码与 SystemTrigger 事件关联来保持用户体验。此自定义代码在后台任务中运行。
你需要了解的内容
技术
先决条件
- 本主题假定你已经为你的应用编写了一个后台任务类,并且该任务需要运行以响应系统触发的某个事件(如 Internet 变为可用或用户登录)而运行。你的应用不必置于锁屏上也可以运行使用 SystemTrigger 和 MaintenanceTrigger 类注册的后台任务。此主题重点介绍 SystemTrigger 类。有关编写后台任务类的详细信息可以在快速入门:创建和注册后台任务中找到。
说明
步骤 1: 创建 SystemTrigger 对象
在应用代码中,创建一个新的 SystemTrigger 对象。 第一个参数 triggerType 指定了将激活此后台任务的系统事件触发器的类型。有关事件类型的列表,请参阅 SystemTriggerType。
第二个参数 OneShot 指定后台任务是否将在下次发生系统事件并触发后台任务时,或在每次系统事件发生时运行一次,直至任务注销为止。
以下代码指定当 Internet 变为可用时运行后台任务:
var internetTrigger = new Windows.ApplicationModel.Background.SystemTrigger(InternetAvailable, false);
步骤 2: (可选)添加条件
如果需要,添加一个后台任务条件以控制任务何时运行。防止后台任务在未满足条件之前运行的条件 - 有关详细信息,请参阅 如何设置运行后台任务的条件。
在此示例中,条件设置为 UserPresent 以便仅在用户主动使用设备时(或者用户变为可用时)运行后台任务。有关可能的后台任务条件的列表,请参阅 SystemConditionType。
以下代码向后台任务中添加一个条件:
var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemCondition.UserPresent);
步骤 3: 注册后台任务
通过调用后台任务注册函数注册后台任务。有关注册后台任务的详细信息,请参阅如何注册后台任务。
下面的代码将注册后台任务:
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Internet-based background task”;
var task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
注意
在 Windows Phone 应用商店应用中,你必须在尝试注册任何后台任务之前调用 RequestAccessAsync。在 Windows 上,仅需在后台任务要求应用在锁屏上才能运行的情况下进行该调用,但在手机上,你必须在每次注册任何后台任务之前调用该方法。
若要确保 Windows Phone 应用在你发布更新后继续正常运行,你必须在启动已经过更新的应用时调用 RemoveAccess,然后调用 RequestAccessAsync。有关详细信息,请参阅后台任务指南 (HTML)。
注意
从 Windows 8.1 开始,后台任务注册参数在注册时进行验证。如果任何注册参数无效,则会返回一个错误。你的应用必须能够处理后台任务注册失败的情况,例如,使用条件语句检查注册错误,然后使用其他参数值重试失败的注册。
备注
若要实际查看后台任务注册,请下载后台任务示例。
后台任务无需置于锁屏上即可为响应 SystemTrigger 和 MaintenanceTrigger 事件而运行,但你仍需要 在应用程序清单中声明后台任务。在电话上,你还必须在注册任何后台任务类型之前调用 RequestAccessAsync。
支持锁屏的应用可以注册响应 TimeTrigger、PushNotificationTrigger 和 NetworkOperatorNotificationTrigger 事件的后台任务,使这些事件可以在应用不在前台时提供与用户的实时通信。有关详细信息,请参阅使用后台任务支持应用。