【问题标题】:Windows Phone Background Application ServiceWindows Phone 后台应用服务
【发布时间】:2013-10-25 11:03:56
【问题描述】:

在我的 windows phone 8 应用程序中,我想定期(少于 10 分钟)从服务器刷新/加载一些数据,而应用程序在后台运行(即处于休眠状态和墓碑状态)。我尝试了计划任务代理和资源密集型任务代理,但它们的调用间隔为 30 分钟。请让我知道是否有其他解决方案可以实现上述要求。

感谢和问候 @完成

【问题讨论】:

  • 应用程序没有在后台运行。所以你不能发出任何api请求。唯一可能的选项是:BackgroundAgent(但它是一个不稳定的解决方案)和推送通知。
  • 为什么每 30 分钟不够?

标签: windows-phone-7 windows-phone-8 windows-phone windows-phone-7.1


【解决方案1】:

如果您需要比 Windows Phone 中的默认设置更频繁地获取数据,您应该考虑使用推送通知。这不适合完整的数据推送,但如果你正确使用它,你可以获得可以接受的用户体验。

解决此问题的一种常见方法是设置您的服务器,以便在有新内容要报告时向设备发送通知,而不是每 10 分钟左右推送一次“没有任何变化”消息。如果您推送一个磁贴更新通知,例如“您有 x 个未读项目”,那么用户可能会单击您的应用程序的磁贴,您可以在启动/恢复时轮询服务器以获取新项目。如果您想要一个更具侵入性的选项,您也可以发送 toast 通知,但在大多数情况下,磁贴更新就足够了。

这种方法有几个优点。

  1. 您不会在用户睡着时每 10 分钟轮询一次电池电量
  2. 您的服务器的负载将大大减少,因为它不必每 10 分钟为每个客户端处理一次完整的数据请求。
  3. 这符合电话应用程序的设计理念 - 您可以向用户展示所需的数据,同时保持电池寿命。

【讨论】:

  • 谢谢,但在我的情况下,这是一个移动发起的请求。例如,刷新会话以保持活动/有效。
【解决方案2】:

我是否正确理解您的主要目标是通过让电话定期进行查询来保持某些主机会话处于活动状态?如果是这样……

我不推荐这种方法:1) 当手机尝试发送查询时,您不能指望手机具有网络连接。如果用户将手机放在口袋或钱包中,可能性会更大。 2) 从安全的角度来看,这可能很糟糕,从主机资源的角度来看,这可能是一种浪费。

您可以改为向您的应用添加逻辑,以尽可能无缝地恢复超时的主机会话。通过对同一主机的原始 HTTP 访问,这将为移动应用价值主张增加真正的实用价值。

【讨论】:

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