在html游戏里添加计时,如何在计时器上运行后台任务 (HTML)

如何在计时器上运行后台任务 (HTML)

12/11/2015

本文内容

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

了解如何计划一次性后台任务,或运行与 Windows 应用商店应用关联的周期性后台任务。 如果用户将你的应用置于锁屏上,则应用可以注册在 Windows 上每隔最长 15 分钟运行一次并在 Windows Phone 上每隔最长 30 分钟运行一次的后台任务。例如,后台任务可用来提供周期性磁贴或锁屏提醒更新。

你需要了解的内容

技术

先决条件

此示例假定你的后台任务需要周期性运行,或在特定时间运行,以支持你的应用。在 Windows 上,如果你已请求该应用通过调用 RequestAccessAsync 来放置到锁屏上,且用户接受了该提示,则后台任务仅可使用 TimeTrigger 运行。在 Windows Phone 上,你必须调用 RequestAccessAsync,但不存在用户提示。有关详细信息,请参阅在锁屏上显示磁贴。

本主题假定你已创建一个后台任务类,其中包含用作后台任务入口点的 Run 方法。若要快速构建后台任务,请阅读快速入门:创建和注册后台任务。有关条件和触发器的详细信息,请参阅使用后台任务支持应用。

说明

步骤 1: 创建时间触发器

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

Windows 8 具有一个内置的计时器,该计时器每隔 15 分钟就会运行一次后台任务。请注意,在 Windows Phone 上,间隔为 30 分钟。

如果 FreshnessTime 设置为 15 分钟并且 OneShot 为 true,则任务将从其注册之时起 0 至 15 分钟内运行一次该任务。

如果 FreshnessTime 设置为 15 分钟并且 OneShot 为 false,则任务将从其注册之时起 0 至 15 分钟内每隔 15 分钟运行一次该任务。

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

例如,该触发器将导致后台任务每小时运行一次:

var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);

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

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

在此示例中,条件设置为 UserPresent 以便触发任务之后,在用户处于活动状态时才运行一次该任务。有关可能条件的列表,请参阅 SystemConditionType。

以下代码向后台任务中添加一个条件:

var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);

步骤 3: 请求锁屏访问

尝试注册 TimeTrigger 后台任务之前,通过调用 RequestAccessAsync 从用户请求添加到锁屏的权限。

在 Windows 上,以下代码向用户提供一个对话框,该对话框请求将应用添加到锁屏。在电话上,该操作仅要求系统允许你的应用运行后台任务:

Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();

注意  一个应用仅允许请求锁屏访问一次。用户只能从两个选项中选择一个,所以他们的首选项已确定。对 RequestAccessAsync 的进一步调用将忽略。

步骤 4: 注册后台任务

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

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

var entryPoint = “js\\ExampleBackgroundTask.js”;

var taskName = “Example hourly background task”;

var task = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, userCondition);

注意

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

备注

注意  在 Windows 上,如果用户已将应用添加到锁屏(或者当应用请求访问时提供权限),则后台任务将仅使用时间触发器注册 - 请参阅在锁屏上显示磁贴。可以将后台任务与不需要应用位于锁屏上的触发器关联。有关这些类型的后台任务触发器的指南,请参阅使用后台任务支持应用。

相关主题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值