繁体   English   中英

Windows Phone 8.1中的后台任务

[英]background task in windows phone 8.1

我正在使用第三方Rest API查询数据并将其显示在我的应用中。 我必须执行大约晚上12点的任务。 它将执行后台任务以从rest api查询数据并更新实时图块并生成通知。 我只想为此任务使用C#。 我不知道什么是执行此任务的最佳方法。 但是我使用下面的代码执行后台任务来做到这一点,这是行不通的。 不知道为什么吗?

BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();
taskBuilder.Name = taskName;
SystemTrigger trigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
taskBuilder.SetTrigger(trigger);
taskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
taskBuilder.TaskEntryPoint = typeof(BackgroundTask.BackgroundTask).FullName;
taskBuilder.Register();

从后台任务中,我正在查询数据并生成吐司通知。

为什么此代码无法正常工作或何时执行此任务的任何帮助。 有没有更好的方法来完成上述任务?

谢谢

关于您尚未使用的代码...

对于与Windows 8 \\ 8.1不同的Windows Phone 8.1,您需要在注册任务之前为任何后台任务调用BackgroundExecutionManager.RequestAccessAsync() (搜索MSDN \\ internet),而在Windows中,仅某些任务需要此操作。 在注册后台任务之前,请确保您的代码调用此函数并验证返回的值。

关于知道您的任务是否“有效” ...

最好独立于您设置的触发条件来运行后台任务实现( IBackgroundTask::Run() ),以确保它通过调试而不会出现问题。 请参阅以下链接中的说明: http : //msdn.microsoft.com/zh-CN/library/windows/apps/xaml/jj542416.aspx

关于您使用SystemConditionType.InternetAvailable ...

我不是100%对此,但我可以肯定,鉴于您已经拥有SystemTriggerType.InternetAvailable这将是多余的。 我不知道会触发触发器,但条件不正确的情况。

关于您提到的要求...

如果我正确理解了您的要求,那么您可以在这里使用其他选项:

  1. 如果您的应用程序是需要基于时间运行的Windows Phone XAML应用程序,则建议您使用TimeTriggerMaintenanceTrigger触发器(而不是SystemTrigger)。 这些都是后台任务。 有关后台任务的常规信息以及TimeTriggerMaintenanceTrigger文档的链接,请参见以下MSDN链接: http : //msdn.microsoft.com/zh-cn/library/windows/apps/xaml/hh977056.aspx
  2. 如果您的应用程序是Windows Phone Silverlight 8.0应用程序,则可以使用后台代理,尤其是PeriodicTaskResourceIntensiveTask 请参阅其他人发布的链接,或在MSDN \\ internet中搜索更多信息。
  3. 如果您的应用程序是Windows Phone Silverlight 8.1应用程序,则可以使用上面1或2中的选项。

我认为您应该尝试使用PeriodicTask 还请考虑链接中提到的约束。

创建一个具有输出类型:Windows Runtime Component的类,并将您的类继承自IBackroundTask,因此如果您从模拟器中使用该类来启动应用程序,则此工作有效,我认为您的用于注册任务的应用程序在模拟器中未激活。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM