在 Windows Phone 8.1 上运行频繁的后台任务
Posted
技术标签:
【中文标题】在 Windows Phone 8.1 上运行频繁的后台任务【英文标题】:Run frequent background task on 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 上可以吗?
【问题讨论】:
由于电池耗尽,Windows 手机操作系统受到限制。同样在 windows phone 8.1 中,用户可以从电池保护程序中删除应用程序,因此不会在后台运行任何任务。因此,您还必须处理第 9 频道参考:channel9.msdn.com/Series/Building-Apps-for-Windows-Phone-8-1/11 【参考方案1】:不可能有以分钟间隔运行的 BackgroundTask。 正如你所说的,最小间隔是 15 分钟。
这是一个操作系统限制,以防止开发人员构建耗电的应用程序。
您总是有一些解决方法,例如拥有 PushNotificationTrigger,并设法每分钟向您的设备发送推送通知。 (我猜有些人可以通过ScheduledToastNotification
做到这一点),但我不会推荐它。
【讨论】:
安德烈是正确的。您所描述的似乎是您的应用程序中的设计问题。您应该问自己为什么要每 1-2 分钟提取(或轮询)数据?你在寻找改变的东西吗?这对于移动设备来说是一种糟糕的设计实践,并且应该仅在数据更改时才将信息推送给它。其次,除非绝对必要,否则不应消费网络数据消费。我只能猜测您在做什么,但您应该重新考虑是否存在无法在被动模式与主动模式中设计的需求。【参考方案2】:AFAIK 与官方 API - 不可能如此频繁地运行 TimeTrigger。请注意,在 WINdows Phone 上,间隔更大(MSDN):
Windows 有一个内置计时器,它每隔 15 分钟运行一次后台任务。请注意,在 Windows Phone 上,间隔为 30 分钟。
由于电池消耗/限制,我怀疑这是否可行。也许您可以将您的应用程序留在前台并禁用锁屏(通过使用 DisplayRequest)。
您也可以尝试运行计时器并在 BackgroundTask 中获得延迟。我没有尝试过,肯定会有很多问题(CPU限制,内存和其他限制),我不确定这是否不符合认证要求,当然它不能保证你的BackgroundTask不会被操作系统终止。
【讨论】:
以上是关于在 Windows Phone 8.1 上运行频繁的后台任务的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 10 移动版上运行的 Windows Phone 8.1 应用程序的后台计时器任务中没有网络
当前的 Windows Phone 8.1 应用程序是不是可以在没有任何代码修改的情况下在 Windows 10 移动设备上运行?
使用 Ionic + Windows Phone 8.1 显示 InAppBrowser
csharp 在Windows 8.1和Windows Phone 8.1应用程序中运行的Expander控件的代码隐藏。