应用更新上的 UWP BackgroundTask

Posted

技术标签:

【中文标题】应用更新上的 UWP BackgroundTask【英文标题】:UWP BackgroundTask on App update 【发布时间】:2016-11-17 21:13:38 【问题描述】:

我有一个简短的问题,如果我更新包含 BackgroundTask 的应用程序,我是否需要在更新后取消注册并重新注册该任务?我经历过,在某些用户的设备上进行更新后,BackgroundTask 不再工作,用户不得不再次禁用并启用它。我在 msdn 文档中看到了一个“ServicingComplete”BackgroundTask,它应该在 App 更新后启动,那么在其中重新注册我的主 BackgroundTask 是否正确?或者在应用更新后让简单的 BackgroundTask 100% 工作的最喜欢的方法是什么?

【问题讨论】:

你如何注册你的后台任务?用户在什么情况下会在你的应用中注册你的后台任务?或者您的后台需要在安装应用程序后始终注册。 我使用按钮在我的应用程序中手动注册了 BackgroundTask。但是,当我为应用程序提交更新时,在某些用户的设备上,一旦安装了应用程序更新,BackgroundTask 就不再工作了。按下 Button 在 App 内注册 BackgroundTask 后,BackgroundTask 又开始工作了。但这只是在少数设备上的情况。所以我的问题是,如何处理? 【参考方案1】:

答案是肯定的。如果您的应用已更新,您需要

取消注册您的后台任务 致电BackgroundExecutionManager.RemoveAccess(); 致电BackgroundExecutionManager.RequestAccessAsync(); 重新注册您的任务

在我自己的应用程序中,我将最新版本号存储在本地设置中,以便我可以检测到这一点。

【讨论】:

好的,但是这可以从 ServicingComplete 任务中完成,还是在应用启动时重新注册?每次都需要 RemoveAccess() 吗? 我也遇到过这个问题,刚刚尝试过,确实是 RemoveAccess 帽子有所作为。没有它,我的 (InProcess) 任务就没有运行,没有任何错误消息。 @andy:我在应用启动时注册(如有必要)。在您的情况下,注册后台任务是用户启动的事情,您可以在启动时检查该任务是否已经注册。如果没有,什么也不做;否则检查应用程序更新并完成我列出的步骤。我自己没有使用过 ServicingComplete 后台任务,因此我不愿提供任何建议——这很可能是一个可行的选择。 这在 Win 8/8.1 中是必需的。 Win10不需要。 它现在在 ServicingComplete BackgroundTask 中工作,事实证明,它是缺少的 BackgroundExecutionManager.RemoveAccess()。非常感谢您的帮助!

以上是关于应用更新上的 UWP BackgroundTask的主要内容,如果未能解决你的问题,请参考以下文章

从 UWP BackgroundTask 调用 MediaCapture.InitializeAsync

我们能否将 UWP BackgroundTask(WindowsRuntimeComponent) 托管为 Windows 服务?

删除多个文件时的 UWP StorageLibraryContentChangedTrigger

UWP使用AppService向另一个UWP客户端应用程序提供服务

UWP使用AppService向另一个UWP客户端应用程序提供服务

Uwp 在用户登录时执行后台任务