[英]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
这将是多余的。 我不知道会触发触发器,但条件不正确的情况。
关于您提到的要求...
如果我正确理解了您的要求,那么您可以在这里使用其他选项:
TimeTrigger
或MaintenanceTrigger
触发器(而不是SystemTrigger)。 这些都是后台任务。 有关后台任务的常规信息以及TimeTrigger
和MaintenanceTrigger
文档的链接,请参见以下MSDN链接: http : //msdn.microsoft.com/zh-cn/library/windows/apps/xaml/hh977056.aspx 。 PeriodicTask
或ResourceIntensiveTask
。 请参阅其他人发布的链接,或在MSDN \\ internet中搜索更多信息。 我认为您应该尝试使用PeriodicTask 。 还请考虑链接中提到的约束。
创建一个具有输出类型:Windows Runtime Component的类,并将您的类继承自IBackroundTask,因此如果您从模拟器中使用该类来启动应用程序,则此工作有效,我认为您的用于注册任务的应用程序在模拟器中未激活。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.