【问题标题】:Differences between ScheduledTaskAgent for Windows Phone 8 and 7.1Windows Phone 8 和 7.1 的 ScheduledTaskAgent 之间的差异
【发布时间】:2012-12-07 01:23:45
【问题描述】:

我有一个大问题。

我为 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 上根本没有触发(我还在真实设备上测试了我的应用程序,两者都有操作系统)。

当我升级到 Visual Studio 2012 (Express for Windows Phone) 时,我注意到可以添加两种不同类型的 ScheduledTaskAgent 项目:一种用于 Windows Phone 7.5,另一种用于 Windows Phone 7.5对于 Windows Phone 8(在 Visual Studio 2010 中显然不是这样......我使用了唯一可用的 = 第一个)!

  1. 您认为这可能是计划代理无法在 WP8 中工作的原因吗?
  2. 这两种项目类型有什么区别?
  3. 如何管理(我的意思是代码)两个该类型的项目?有可能吗?
  4. 如何选择我必须注册的任务(参见下面的代码)?
  5. 两个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

提前谢谢你。

【问题讨论】:

    标签: silverlight visual-studio-2012 windows-phone-7.1 scheduled-tasks windows-phone-8


    【解决方案1】:

    这两种项目类型之间的唯一区别是 (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,您的代理会在您调试时被调用吗?

    【讨论】:

    • 感谢您的链接:非常有趣。所以为 WP7.1 和 WP8 设置 ScheduledTaskAgent 的唯一方法是拥有 4 个项目?!!这不是很容易维护和测试......尤其是当您修改视图中的某些内容时! :(
    • 您将有 4 个项目,但每个视图应该只有一个文件,其他的应该只是链接。
    【解决方案2】:

    首先确保您在应用清单文件中获得了正确的引用。

    <ExtendedTask Name="BackgroundTask">
        <BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="MyApp.Agent" Source="MyApp.Agent" Type="MyApp.Agent.ScheduledAgent" />
    </ExtendedTask>
    

    其次,必须在主应用项目中引用代理库。
    第三,确保您没有超过允许的运行时间或内存分配。在 WP8 中,后台代理的上限提高到 11MB。此外,注册后台任务的应用程序也有限制,因此您的任务可能没有空闲插槽用于 bg 代理。

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多