禁用后台任务

Disabling background task

我的应用程序处理原始推送通知,但它在 运行 在前台或作为后台任务时以不同方式处理它们。

现在,当应用程序启动时,我会检查是否有 bg 任务已注册,如果已注册,我会取消注册任务并让应用程序处理推送通知,当应用程序关闭或暂停时,我会重新注册 bg任务。

这种方法对我来说似乎不太干净。有没有更好的方法可以在应用程序处于活动状态时暂停后台任务,或者有一种方法可以从 IBackgroundTask?

检查应用程序的状态

首先请检查您的通知是否已传递给 BackgroundTask,如 MSDN says:

When your app's cloud service sends a notification to Windows, your app has the opportunity to intercept and handle that notification before it displays a toast, updates a tile or badge, or delivers a raw notification to a background task.

如果你有 运行 应用程序,你应该能够在它进入后台任务或其他地方之前拦截通知。

如果您想根据 UI 区分后台任务的工作,您可以在 LocalSettings 中提供一个标志,它负责 UI状态,然后让您的 BTask 检查标志并决定是否执行工作。

UI只是改变了设置中的标志,然后你不必注销BTask。