后台任务和运行应用检测

Posted

技术标签:

【中文标题】后台任务和运行应用检测【英文标题】:Background task and running app detection 【发布时间】:2013-08-06 11:51:11 【问题描述】:

我的应用中有后台任务,每 15 分钟运行一次(在锁定屏幕上时)。 执行后台任务时是否可以检测我的应用程序是否正在运行?在这种情况下,我想跳过后台任务执行,以避免并发问题。

【问题讨论】:

【参考方案1】:

您无法检测您的应用何时从后台任务运行,但您可以通过 BackgroundTaskRegistration Progress 和 Completed 事件检测后台任务何时从您的应用运行。

此示例涵盖了您应该需要的所有内容。 http://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9

【讨论】:

该链接告诉我:“该项目尚未发布。如果您是该项目的所有者,请使用相应的帐户登录。” 微软似乎删除了旧样本,我已经用 Windows 8.1 样本更新了链接。【参考方案2】:

因为应用程序和后台任务都可以访问应用程序数据,所以让应用程序在激活时在 ApplicationData.localSettings 中存储一个标志,在暂停时清除标志,并在恢复时重置标志。然后,后台任务可以在启动时检查该标志并从那里做出决定。

【讨论】:

是的,听起来像是唯一的解决方案,但如果应用程序意外终止怎么办?【参考方案3】:

您是否考虑过共享互斥锁?这可以避免(例如)后台任务失败并且没有清除其活动标志或 localSettings 损坏的可怕情况。

【讨论】:

以上是关于后台任务和运行应用检测的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中检测后台应用刷新的用户设置

如果应用程序正在启动,如何停止后台任务?

长时间运行的后台任务完成后应用程序未挂起

后台任务永远运行?

win7任务管理器无法显示任务 明明后台在运行 但在任务管理器应用程序任务一栏却没有显示 求解

Win 10 应用开发在App所在的进程中执行后台任务