例子:Background Agent Sample

通过本例程学习:

  • 后台代理Agent的使用方法

定期代理(PeriodicTask)来说,限制了:

  1. 有一些API不能使用,并不是说你不调用就可以了,只要你在同一个程序集里使用了这些API,就不会通过验证;
  2. 内存不能超过6MB,否则立即终止;
  3. 生效时间最长只有14天,过期后就需要重新计划。14天需要用户,重新启动Agent
  4. 连续两次崩溃之后会被禁用,做好准备捕捉一切异常吧;
  5. 每30分钟运行一次,每次最多执行25秒,超时后立即终止,所以如果在后台任务里下载文件的话,要特别注意文件的大小;
  6. 节电模式会阻止执行;
  7. 手机中的后台任务数量是有上限的,最少为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}" />
上一篇:saltstack-----上线环境篇(一)


下一篇:linux文件管理--压缩打包