可能重复:
How to run application in background in Windows Phone?
我正在调查Windows Phone 8 SKD,以获取有关如何创建任务(即精确的FTP写入)的示例,即使应用程序在后台也会定期执行。
文档指向Background Agents,因为后台传输服务 “仅支持使用HTTP和HTTPS进行传输。不支持FTP”。我一直在尝试和测试样本,一切都在工作(或多或少),除了无法设置后台代理事件时间。根据文档“定期代理通常每30分钟运行一次”,并且没有方法/类/构造函数具有时间/日期参数。您有ScheduledActionService.LaunchForTest(任务,时间),但它仅在调试时使用,而不是在生产中使用,并且可以使MS从市场上拒绝您的应用。
是否有任何解决方案或解决方法让我的代理每分钟都启动?
答案 0 :(得分: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
答案 1 :(得分:1)
不,WP8平台并不像你想的那样真正支持后台任务。这是故意尝试通过让应用程序在后台运行来限制破坏电池寿命。
后台代理是您提供的解决方案,如果您确实需要在应用程序未处于活动状态时运行某些内容,但它们不是您可以安排的内容。
平台希望您切换到一个模型,其中轮询操作被推送通知取代,并且尽可能多的重要处理在设备上执行。