我有一个大问题。
我为Windows Phone 7.1+编写了一个应用程序,它也在Windows Phone Store上发布: 此应用程序适用于Windows Phone 7.1和Windows Phone 8,并且在应用程序提交过程中没有任何问题(谁还声明我的应用程序与Windows Phone 7.5以后的任何操作系统完全兼容)。
这个问题只与我的Scheduled Agent
有关,它在Windows Phone Mango(7.1)上完美运行,但它在Windows Phone 8上根本没有启动(我还在真实设备上测试了我的应用程序,同时使用OS')。
当我升级到 Visual Studio 2012(Express for Windows Phone)时,我注意到可以添加两种不同类型的ScheduledTaskAgent
项目:一种用于Windows Phone 7.5一个用于Windows Phone 8(显然在Visual Studio 2010中并非如此......我使用了唯一可用的=第一个)!
ScheduledTaskAgent
项目而失败(我认为是这样)?当我在启动时注册我的任务时,这是代码的关键部分:
PeriodicTask newTask = new PeriodicTask("MyTaskID");
newTask.Description = "my Description";
ScheduledActionService.Add(newTask);
#if DEBUG
Microsoft.Phone.Scheduler.ScheduledActionService.LaunchForTest("MyTaskID", TimeSpan.FromSeconds(5));
#endif
提前谢谢。
答案 0 :(得分:2)
两种项目类型之间的唯一区别是:(1)Windows Phone 8一个目标是Windows Phone 8而不是7.1;(2)它引用Windows Phone 8 SDK而不是Windows Phone 7 dll。
我有一个应用程序,我有两个项目(7.1和8.0)。我还有两个后台代理项目(7.1和8.0),我使用链接文件在它们之间共享代码。我引用了8.0项目中的8.0代理和7.1项目中的7.1代理。我使用this example作为拥有两个版本代码的最佳实践。
您不想引用两个代理,因为这不起作用。
如果你删除#if DEBUG,你的代理会在调试时被调用吗?
答案 1 :(得分:0)
首先确保您在应用清单文件中获得了正确的引用。
<ExtendedTask Name="BackgroundTask">
<BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="MyApp.Agent" Source="MyApp.Agent" Type="MyApp.Agent.ScheduledAgent" />
</ExtendedTask>
其次,必须在主应用程序项目中引用代理库 第三,确保不超过允许的运行时间或内存分配。在WP8中,后台代理的上限提高到11MB。此外,注册后台任务的应用程序存在限制,因此您的任务可能没有使用bg代理的免费插槽。