【问题标题】:Run frequent background task on Windows Phone 8.1在 Windows Phone 8.1 上运行频繁的后台任务
【发布时间】:2014-08-04 14:01:04
【问题描述】:

Windows Phone 平台提供 BackgroundTasks 基础架构。我可以这样注册我的任务:

builder.TaskEntryPoint = TaskName;
var trigger = new TimeTrigger(15, false);

builder.SetTrigger(trigger);
builder.Register();

问题是,TimeTrigger 最小间隔约为 15 分钟,这对我的应用程序来说相当大。我需要在后台每 1-2 分钟运行一次任务。在 Windows Phone 上可以吗?

【问题讨论】:

标签: c# windows-phone-8 windows-phone windows-phone-8.1 background-task


【解决方案1】:

不可能有以分钟间隔运行的 BackgroundTask。 正如你所说的,最小间隔是 15 分钟。

这是一个操作系统限制,以防止开发人员构建耗电的应用程序。

您总是有一些解决方法,例如拥有 PushNotificationTrigger,并设法每分钟向您的设备发送推送通知。 (我猜有些人可以通过ScheduledToastNotification 做到这一点),但我不会推荐它。

【讨论】:

  • 安德烈是正确的。您所描述的似乎是您的应用程序中的设计问题。您应该问自己为什么要每 1-2 分钟提取(或轮询)数据?你在寻找改变的东西吗?这对于移动设备来说是一种糟糕的设计实践,并且应该仅在数据更改时才将信息推送给它。其次,除非绝对必要,否则不应消费网络数据消费。我只能猜测您在做什么,但您应该重新考虑是否存在无法在被动模式与主动模式中设计的需求。
【解决方案2】:

AFAIK 与官方 API - 不可能如此频繁地运行 TimeTrigger。请注意,在 WINdows Phone 上,间隔更大(MSDN):

Windows 有一个内置计时器,它每隔 15 分钟运行一次后台任务。请注意,在 Windows Phone 上,间隔为 30 分钟。

由于电池消耗/限制,我怀疑这是否可行。也许您可以将您的应用程序留在前台并禁用锁屏(通过使用 DisplayRequest)。

您也可以尝试运行计时器并在 BackgroundTask 中获得延迟。我没有尝试过,肯定会有很多问题(CPU限制,内存和其他限制),我不确定这是否不符合认证要求,当然它不能保证你的BackgroundTask不会被操作系统终止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多