博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone后台代理详解
阅读量:6486 次
发布时间:2019-06-23

本文共 2689 字,大约阅读时间需要 8 分钟。

  hot3.png

Windows Phone代理

 应用于Windows Phone 8 | Windows Phone OS 7.1

调度任务和后台代理使得一个应用即使不在前台运行时也能在后台执行代码。不同类型的调度任务被设计用于不同类型的后台处理场景,并因此具有不同的行为和限制。本主题描述了调度、持续时间和限制。

此主题包含以下部分:

· 调度任务的类型

· 后台代理的生命周期

· 所有调度任务类型的限制

· 周期性代理的限制

· 资源集中型代理的限制

· 

Scheduled Task的类型

    下面所列的是Scheduled Task的类型。注意 是从派生的。运行于后台的代码存放于从派生的类中,而是从类派生的。

Scheduled Task 类型

描述

    周期性代理,每经过一个周期性循环间隔就运行一小段时间。使用此种任务的典型情况包括上传设备的位置和执行小量的数据同步。

    资源密集型代理,指当phone遇到与处理器activity、电源、网络连接相关的需求集合时需运行相对较长一段时间的后台代理。应用这种任务的一个典型的场合是当phone没有被用户使用而未处于活动状态时,后台同步大量的数据到phone上。 

后台代理的生命周期

    一个应用可能只有一个后台代理。这个代理可以被注册为一个PeriodicTask,一个ResourceIntensiveTask,或两者兼具。对代理运行所使用的调度算法依赖于任务所注册的类型。在某一时刻,只有一个代理的实例在运行。

    代理的代码在一个派生类中实现。当代理被启动,操作系统会调用其方法。在此方法中,应用可以确定是作为哪种类型的ScheduledTask在运行,然后执行合适的动作。当代理完成了它的任务,它应该调用或 以使操作系统知道它完成了。NotifyComplete 应在任务执行成功后使用。如果代理不能执行它的任务-比如所需的服务端不能连接了-那么代理应该调用Abort,这使得 属性被置为false。前台应用可以检查此属性以确定是否后台调用了Abort。

各调度任务的类型的共同限制

下面的约束应用于所有的Scheduled Tasks。

限制

描述

不支持的APIs

    有很多API不能被任何Scheduled Task使用。使用这些API 不是导致运行时抛出异常,就是导致在提交应用到商店时认证失败。要查看被限制的API们,见

内存使用限制

    周期性代理和资源密集型代理不论任何时刻都不能使用超过6 MB内存。音频代理限制到15 MB。如果一个Scheduled Task 超出了这个内存数量,它将被立即终止。

    当运行于debugger模式时,内存和超时的限制被临时取消。你可以使用 API 来查询前台应用和后台代理的内存限制。

每两周需重新调度一次

    使用  属性来设置多长时间之后停止任务的调度。当action 是被方法所调度时,此值必须被设置为小于两周的时间。当与任务关连的应用在前台运行时,它可能重新调度任务从而重新把运行期限设置为从现在开始的两周。    存在很多使一个应用的后台代理不会停止或会重生的情况,如果你的应用的Tile被固定在开始屏幕上了,你的后台代理在任何调用 来更新Tile时,其生存时间会被自动扩展到两周。更多信息见.

    如果你的应用被用户选择显示于锁屏上,你的后台代理的生存期在每次它调用来更新锁屏时自动扩展到两周。更多的信息,见

    如果你的应用使用一个资源密集型代理自动上传图像,如果用户在图像+相机设置页中为你的应用启动了此特性,那么这个资源密集型代理的调度将永不停止。更多的信息,见 

连续两次崩溃后代理停止调度

    周期性和资源密集型代理都会在因为超出内存配额或且它任何未处理的异常连续两次退出后停止调度。代理必须通过前台进程才能重新调度。

周期性代理的限制

下面是代理的调度,持续时间和普遍性的限制。

限制

描述

调度间隔:30分钟

    周期性代理一般每30分钟运行一次。为了延长待机时间, 周期性代理可能调整到与其它后台进程相连的时间运行,所以其执行时间可能会有10分种的波动。

调度持续:25

    周其性代理通常运行25秒。也有其它的限制条件可能导致一个代理过早终止。

省电模式可以阻止执行

    省电模式是一个选项,用户可以启用它来表明优先节省用电量,如果此模式被启用,即使超过了间隔时间 ,周期性代理可能不再运行。

各设备的周期性代理限制

    为了帮助最大程度的节省电量,有一个对于周期性代理的数量上的硬规定。这跟据每个设备的配置而不同,它最低可以到6。还有一个限制低于硬规定数,在超过这个限制之后用户被警告有多个后台代理运行从而使电量被快速消耗。

注意:

    如果你想在超出设备的限制数后添加一个周期性后台代理的话,对 的调用将抛出一个InvalidOperationException。因为各设备的周期性代理数限制的太低,所以你的应用很容易遇到这个问题。所以,当添加周期性代理时,捕获这个异常是非常重要的,这样你的应用才不会崩溃。示例代码可以在这里.找到。

资源密集型代理的限制

下面是资源密集型代理的调度,持续时间,和一般性限制。

限制

描述

持续:10分钟

    资源密集型代理一般只运行10分钟。还有一些其它限制可能导致一个代理过早终止。

需要外部电源

    资源密集型代理只有在设备连接到一个外部电源时才运行。

非蜂窝连接

    资源密集型代理只有在建立Wi-Fi连接或通过连接到PC建立网络连接时才运行。

最小电量

    资源密集型代理只有在设备的电量大于90%时才运行。

需要锁屏

    资源密集型代理只有在锁屏时才会运行。

不通话

    资源密集型代理不会在打电话时运行。 

不能改变网络到蜂窝

    如果一个资源密集型代理试图调用 时指定了MobileBroadbandGSMMobileBroadbandCDMA,调用会失败。

    如果一个设备进入一个状态,这个状态满足了以上所有条件然后一个资源密集型代理开始运行,之后设备的状态就发生了改变,然后其中某一项条件不再满足,那么这个资源密集型代理将立即终止。

注意:

    由于设备的所有条件都满足才能运行资源密集型代理,可能会出现一个代理在某个设备上永远不能运行。例如,如果一个用户没有连接Wi-Fi或一个PC,它将永不能获得一个非蜂窝连接,并且资源密集型代理将永不运行。同时,资源密集型代理只能有一个在运行,所以当更多的应用使用资源密集型代理时,某个代理运行的希望更加渺茫。你应该在设计你的应用时仔细斟酌这个问题。

转载于:https://my.oschina.net/nkm/blog/100085

你可能感兴趣的文章
mysql-5.6.27源码安装及错误解决办法
查看>>
Shell 函数、数组与正则表达式
查看>>
编译安装PHP时两个报错的解决办法
查看>>
System Center 2012 SP1 Data Protection Manager 防止重复备份数据
查看>>
软考复习之路——软考总结
查看>>
Kali linux 2016.2(Rolling)里Metasploit的常用模块
查看>>
企业项目开发--企业中的项目架构以及多环境分配(1)
查看>>
ZOJ 2412 Farm Irrigation
查看>>
C++语言基础(19)-模板的显式具体化
查看>>
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
查看>>
如何改变Android tab 的高度和字体大小
查看>>
hdu 2853
查看>>
VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试...
查看>>
Vue.js常用指令:v-show和v-if
查看>>
java自定义接口
查看>>
Codeforces Round #152 (Div. 2) B题 数论
查看>>
马云马化腾等大佬,是如何看待区块链的?
查看>>
10倍于行业增速!海尔冰箱套圈引领
查看>>
Java集合总结【面试题+脑图】,将知识点一网打尽!
查看>>
java基础(十) 数组类型
查看>>