2012年6月24日星期日

WP7系统对付流氓程序的策略

  本文主要说一说WP7手机的一个重要特点,那就是对于后台任务的管制,这个是对普通用户最为重要的,不过先声明并不是说的mango更新里新增的多任务切换的墓碑机制,而是WP7对于在后台运行的程序的种种限制,通过了解这些限制可以看看WP7是怎样帮消费者出出在Android平台里被流氓软件偷偷跑后台的这口怨气的。

  多任务运行大家都领教过,从Windows系统到古老的Windows Mobile,还有Android都支持实时多任务机制。我们可以一边听歌一边上网,一边打游戏还能抽空出去聊个QQ,不过这也给普通用户带来了困扰,以马大嘴旗下的淘宝官方客户端为例,各种自己霸占后台不打招呼,关闭了所有需要推送的功能还是照开不误。偷流量,占内存不说,某些程序甚至还把自己加入到系统服务列,让用户无法以常规手段关闭,感觉这些开发商活的好累啊,可是WP7敲响了这些人的末日丧钟。因为整个WP7系统对于后台任务做了严格而苛刻的限制。

  从系统设计来说,WP7的后台任务分为两种,Periodic Task(周期任务)和Resource Intensive Task(资源密集型任务),前者用于程序在后台更新一下Live Tile,或者联网查个天气更新这种小任务,后者用于在线下载这种需要长时间执行的大任务。

  (1)一个程序能不能开后台,完全取决于用户的选择

  在系统设置里,专门有一项控制后台程序,所有想在后台运行的程序都会在这里一项项列出来,想走后门?先问问用户允许不允许吧,在这里你除了可以看到所有的程序列表,还可以看到该程序在开发时所填写的为什么要后台运行的理由,所有程序就像一个个做了错事的孩子等待父母的教诲。

  (2)对于用户没有吸引的程序,开了后台也坚决关闭

  WP7系统规定,所有后台任务的生效时间只有14天,也就是说,14天的周期中,如果你都没有再开过这个程序,那系统将自动关闭该程序的后台运行。比如你下载了一个新奇的应用,在你第一次打开它的时候它开启了后台运行机制,但是可怜的它由于制作太烂导致你在剩下的14天中都没有开启它。并且由于工作的繁忙,你也没有去查看设置里的后台任务列表。呵呵没关系,系统自动就关闭了这小子。

  (3)就算了你侥幸让用户开了后台,代码没优化好照样被关

  到MANGO,也就是WP7.5,系统规定程序在后台运行的时候内存占用不能超过6MB,否则立即终止;同时也要求程序员对于程序代码慎之又慎,如果程序在后台运行时连续崩溃两次那么系统也将立刻关闭该程序在后台运行的权限。

  (4)如果程序滥用后台运行权限,系统也将立刻终止

  所有后台运行的程序每30分钟运行一次,每次最多执行25秒,超时后立即终止,想借助特权胡作非为么?WP7将直接代替用户对你说NO.

  (5)对于需要长时间执行后台的程序,系统也提供了途径

  刚才说的Resource Intensive Task在这里就派上了用场,可惜由于这些资源密集型任务需要资源过多,系统也将严格限制,除了刚才说的前3条之外,还有其余额外的限制,那就是:

  a)电池电量不得低于90%,而且需要连接外部电源;

  b)需要非手机网络连接,连着WIFI或PC吧,亲;

  c)屏幕必须锁定,也不能接打电话,否则不执行;

  d)最多执行10分钟,超时立即终止;

  结语

  可以看出,无论从Windows Phone生态体系的构建,还是到WP7系统的细节设计,微软都展现出强大的控制欲,尤其对于后台运行的程序这一块,这将带领用户进入一个“我说了算”的时代,流氓不怕,会武术的流氓也不怕,只要你为WP7写APP,你就要服管,即使用户不懂这些机制,微软依然会对程序进行严格的管制,以期给用户提供一个良好的体验。

  作者ID:Albert Gao,网站微博