例子:Background Agent Sample
通过本例程学习:
- 后台代理Agent的使用方法
定期代理(PeriodicTask)来说,限制了:
- 有一些API不能使用,并不是说你不调用就可以了,只要你在同一个程序集里使用了这些API,就不会通过验证;
- 内存不能超过6MB,否则立即终止;
- 生效时间最长只有14天,过期后就需要重新计划。14天需要用户,重新启动Agent
- 连续两次崩溃之后会被禁用,做好准备捕捉一切异常吧;
- 每30分钟运行一次,每次最多执行25秒,超时后立即终止,所以如果在后台任务里下载文件的话,要特别注意文件的大小;
- 节电模式会阻止执行;
- 手机中的后台任务数量是有上限的,最少为6个,当手机中已启用的后台任务达到上限后,就无法再启用新的后台任务了,这时候你还得提醒用户:“亲,到这里的这里的这里看看后台任务是不是超过6个了,是的话,挑一个禁用了,然后回来再试试”……
资源密集型代理
除了定期代理之外,Windows Phone还支持另外一种后台任务——资源密集型代理(ResourceIntensiveTask),不过我们通常都不会用到它,因为它简直就是个杯具,它的限制不仅多,而且都很变态,除了拥有定期代理的前4挑限制之外,它还限制了:
- 电池电量不得低于90%,而且需要连接外部电源;
- 需要非手机网络连接,连着WIFI或PC吧,亲;
- 屏幕必须锁定,也不能接打电话,否则不执行;
- 最多执行10分钟,超时立即终止;
实现代码:
using Microsoft.Phone.Scheduler; PeriodicTask periodicTask; ResourceIntensiveTask resourceIntensiveTask; //New periodicTask = new PeriodicTask(periodicTaskName); //Add ScheduledActionService.Add(periodicTask); //Set as Context PeriodicStackPanel.DataContext = periodicTask; //Using property of Agent in XAML <TextBlock Text="{Binding LastScheduledTime}" /> <TextBlock Text="{Binding ExpirationTime}" /> <TextBlock Text="{Binding LastExitReason}" />
posted on 2013-08-13 18:03 Amazing-Ren 阅读(289) 评论(0) 编辑 收藏 举报