后台任务指南和清单 (HTML)

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

创建最佳后台任务以支持你的应用并且确保你的应用满足运行后台任务的要求。

后台任务指南

开发你的后台任务时,在发布你的应用之前,考虑以下指南。

关闭后台任务: 请不要忘记在后台任务完成时需要调用 close() 方法。如果后台任务本身没有关闭,则运行后台任务的流程可以继续使用内存和电池寿命,即使该后台任务已完成或被取消也是如此。

CPU 和网络配额: 不要超过适用于你的后台任务的 CPU 配额或网络数据使用配额。后台任务应该是轻型的任务以延长电池寿命并为前台应用提供最佳用户体验。有关适用于后台任务的资源限制,请参阅使用后台任务支持应用

管理后台任务: 你的应用应该获取已注册后台任务的列表,注册进度和完成处理程序以及相应地处理这些事件。你的后台任务应报告进度、取消以及完成。请参阅如何获取待完成后台任务的列表如何处理取消的后台任务如何监视后台任务进度和完成情况

更新应用清单: 在应用程序清单中声明每个后台任务及其使用的触发器类型。否则,你的应用将不能在运行时注册后台任务。有关详细信息,请参阅如何在应用程序清单中声明后台任务

准备应用更新: 如果你的应用将更新,请创建和注册一个 ServicingComplete 后台任务(请参阅 SystemTriggerType),以帮助在前台运行的上下文之外执行所需的应用更新。

Windows 上支持锁屏的应用的后台任务: 锁屏是一个共享的资源。一次只能在锁屏上放置 7 个应用,并且只有一个应用可以显示宽磁贴。你的应用可以通过使用 RequestAccessAsync 方法请求锁屏访问,同时确保你的应用即使不在锁屏上也仍然工作来提供最佳用户体验。未使用锁屏的应用仍可以更新磁贴,更新锁屏提醒,发送通知以及注册系统事件触发器。当应用位于前台时的用户体验应该从不中断,即使用户未将应该放置在锁屏上也是如此。

请阅读锁屏概述以了解锁屏是否适合你的应用。

请求为 Windows Phone 应用商店应用执行后台任务:

Windows Phone 应用商店应用无需固定到锁屏,即可运行所有受支持的任务类型。但是,你的应用必须在注册任何类型的后台任务之前调用 RequestAccessAsync。如果超出整个系统上具有后台任务的应用数量上限,或者用户在设备设置中显式拒绝了应用的后台任务权限,该方法会返回 BackgroundAccessStatus.Denied

对于 Windows Phone 应用商店应用,如果你的应用将进行更新,则必须调用 RemoveAccess,然后在启动已经过更新的应用时调用 RequestAccessAsync。若要确定应用何时已更新,则应该使用存储在本地设置中的值来跟踪该应用的版本号。启动应用后,请检查应用的版本,如果它高于本地设置中的版本,则调用 RemoveAccessRequestAccessAsync。若要执行此操作,请添加与以下代码类似的代码,并从你的应用的启动事件处理程序调用它。

function checkAppVersion() {
    var localSettings = Windows.Storage.ApplicationData.current.localSettings;
    var pkgVersion = Windows.ApplicationModel.Package.current.id.version;
    var backgroundExecMgr = Windows.ApplicationModel.Background.BackgroundExecutionManager;

    var appVersion = pkgVersion.build + "." +
                        pkgVersion.major + "." +
                        pkgVersion.minor + "." +
                        pkgVersion.revision;

    if (localSettings.values["appVersion"] != appVersion)
    {
        // Our app has been updated
        localSettings.values["appVersion"] = appVersion;

        // Call removeAccess
        backgroundExecMgr.removeAccess();
    }
        
    backgroundExecMgr.requestAccessAsync();
}

后台任务清单

以下清单适用于所有后台任务。

  • 将后台任务与正确的触发器关联。

  • 添加条件以帮助确保你的后台任务成功运行。

  • 处理后台任务进度、完成以及取消。

  • 请勿通过后台任务显示 UI,但 Toast、磁贴以及锁屏提醒更新除外。

  • 当后台任务完成工作后调用 close()。

  • 使用永久性存储在后台任务与应用之间共享数据。

  • 在应用程序清单中声明每个后台任务及其使用的触发器类型。确保入口点和触发器类型正确。

  • 编写生存时间较短的后台任务。请勿超过使用后台任务支持应用中显示的 CPU 或网络配额。

  • 不要依赖后台任务中的用户交互。

  • 检查是否存在后台任务注册错误。如果适用,请尝试使用不同参数值来再次注册后台任务。

Windows:支持锁屏的应用的后台任务清单

当开发可以使用锁屏的应用的后台任务时,请遵循此指南。遵循锁屏磁贴指南和清单中的指南。

  • 在将你的应用作为可锁屏应用进行开发之前,确保该应用位于锁屏上。有关详细信息,请参阅锁屏概述

  • 确保你的应用在未置于锁屏上时也能工作。

  • 使用 RequestAccessAsync 方法请求锁屏访问。

  • 包含使用 TimeTrigger 注册并在应用清单中声明的后台任务。确保入口点和触发器类型正确。 这是认证所需的内容,它使得用户能够将应用置于锁屏上。

  • 编写生存时间较短的后台任务,即使为可锁屏的应用编写后台任务也是如此。请勿超过使用后台任务支持应用中显示的 CPU 或网络配额。

  • 对于 Windows Phone 应用商店应用,如果设备内存不足,后台任务将在没有任何警告且不引发 OnCanceled 事件的情况下终止。这有助于确保前台中应用的用户体验。应该将后台任务设计为处理此方案。

相关主题

与后台任务相关的其他主题

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

如何注册后台任务

如何调试后台任务

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

如何在 Windows 应用商店应用中触发暂停、恢复和后台事件(在调试时)

与锁屏相关的其他指南

锁屏概述

在锁屏上显示磁贴

锁屏磁贴指南和清单