2

可能重复:
如何在 Windows Phone 后台运行应用程序?

我正在研究 Windows Phone 8 SKD,以获取有关如何创建任务(准确地说是 FTP 写入)的示例,即使应用程序在后台,该任务也会定期执行。

该文档将我指向后台代理,因为后台传输服务“仅支持使用 HTTP 和 HTTPS 进行传输。不支持 FTP”。我一直在尝试和测试样本,除了无法设置后台代理事件时间这一事实之外,一切正常(或多或少)。根据文档“定期代理通常每 30 分钟运行一次”,并且没有方法/类/构造函数具有时间/日期参数。您有 ScheduledActionService.LaunchForTest(task, Time) 但它只能在调试期间使用,而不是在生产中使用,并且可以使 MS 拒绝您的应用程序进入市场。

是否有任何解决方案或解决方法可以让我的代理每分钟都启动?

4

2 回答 2

5

当您的应用程序不在前台运行时,您不能让您的应用程序每 1 分钟执行一次代码。通常您会使用所谓的 PeriodicTask 或 ResourceIntensiveTask 进行后台执行。第一个每约 28 分钟运行一次,可以使用不超过 6MB 的内存(WP8 上为 11MB),并且必须在约 20 秒内完成执行。第二个可以运行更长的时间并使用更多的内存,但它有一些严格的要求,例如手机对 Wi-Fi 信号、充电器等...

您可以在 WP8 上做的另一件事是实现位置跟踪应用程序,如果它正在主动跟踪用户的位置,它可以在后台运行。如果您的应用程序是基于位置的,您可以使用它并每 1 分钟下载一次您想要的任何内容。但是,如果您的应用程序不是基于位置的,那么您很可能不走运。

如何在 WP8 中使用位置跟踪和后台执行:http:
//msdn.microsoft.com/en-us/library/windowsphone/develop/jj681691 (v=vs.105).aspx

于 2012-11-30T20:37:16.863 回答
1

不,WP8 平台并不像你想象的那样真正支持后台任务。这是通过在后台运行应用程序来限制破坏性电池寿命的故意尝试。

如果您确实需要在应用程序不活动时运行某些东西,后台代理是提供的解决方案,但它们不是您可以安排的东西。

该平台希望您切换到一个模型,其中轮询操作被推送通知取代,并且尽可能多的重要处理在设备之外执行。

于 2012-11-30T15:07:56.220 回答