我怎样才能看到我的基于javascript的UWP是否在“后台任务”中运行?上下文

How can I see if my JavaScript-based UWP is running in a "background task" context?

本文关键字:后台任务 是否 UWP 上下文 运行 javascript 我的      更新时间:2023-09-26

UWP支持"后台任务",它在后台运行,例如响应一些系统事件或实现一个App Service。

基于javascript的UWP应用程序在各自的应用程序清单文件(.appxmanifest)中声明后台任务。

检测我的代码是否作为后台任务运行的最佳实践是什么?

我假设如果你问这个问题,你已经建立,注册,并执行了一个后台任务,这只能从UI线程使用ApplicationTrigger (https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.background.applicationtrigger)来完成。如果你还没有,那么你的应用可能处于预发布阶段(https://learn.microsoft.com/en-us/windows/uwp/launch-resume/handle-app-prelaunch)。否则,你应该能够在调用requestAsync()之前和之后以编程方式处理报告,或者通过在后台任务中通过windows . ui . webui . webbuibackgroundtaskinstance . progress

跟踪后台任务的进度。

根据指南,首先你需要创建一个后台任务类,并注册它,当你的应用程序不在前台时运行。

后台任务与应用程序解耦,它们分别运行,但后台任务的进度和完成可以由应用程序代码监控。为了实现这一点,应用程序订阅了它在系统中注册的后台任务的事件。你可以使用BackgroundTaskProgressEventHandler

var backgroundTaskProgressEventHandler = function(sender, args) {
 /* Your code */
}

UWP "后台任务"是作为修改后的web worker实现的。检测web worker上下文包含在其他SO问题(1,2)中。一个解决方案如下:

function inBackgroundTaskContext() {
    return typeof importScripts === 'function'
}

importScripts是一个可以在web worker上下文中调用的函数。

当应用运行在"正常"的应用上下文中时,它不会被定义。