ios系统在ios4开始加入了多任务后台功能,连按两下home键呼出后台,然后就可以在之前打开的程序中切换,但是围绕这一设计的争议始终阴魂不散。现在我们再通过一片开发者的文章来详细了解一下ios多任务工作原理。
最近在blogsphere上有一篇关于ios多任务后台的火热的讨论,有相当大的一部分ios玩家认为当程序被留在多任务后台中时会加快电量的消耗,以及占用更多的系统资源。但名为fraserspeirs的开发者发表文章澄清了后台程序的工作方式。
九成的程序不会在后台运行
事实上你根本就不需要管理ios的多任务后台,因为你所看到留在后台当中的程序并非真正的在运行,其实多任务后台并不是实质上的任务管理器,更确切的说,更像是类似浏览器历史记录的东西,只不过专门针对程序的记录而已。
在speirs的文章中,他特别指出了苹果商店中的“天才”们是如何帮助错误的观点散播的,据speirs所说,他本人也被这些天才们告知应该将多任务后台中的所有程序全部移除,以获得更久的用电量和释放更多的系统资源。这是在非常扯淡。
总体来讲多任务后台只是一个让用户可以在最近打开的程序中做切换的一个工具而已,对以上理论最好的证明就是当你重启你的iphone后,在多任务后台中还是会显示所有你最近开启过的程序,显然他们不可能在运行。
当你按home键离开程序后,你根本不需要再去管多任务后台的东西,因为有90%的程序都会在你按home键离开程序后停止运作,已经停止运作的程序又要如何消耗更多的电量以及系统资源呢?
下面speirs描述了ios是如何在后台处理程序的:
关闭-这个程序以彻底关闭或尚未被开启
待用-程序处于开启状态,但是并未收到任何指令(例如:程序开启但用户锁定了机器)
使用中-正常使用中的程序
后台-程序不在开启状态但仍然在后台运行代码
暂停-程序仍然在使用内存但并未运行代码
在speirs所提到的这几种模式中,“待用”跟“使用中”并非这篇文章讨论的内容,因为待用仅是将程序冻结住。
程序在关闭后只有5秒的处理时间
技术上来讲,所有的程续在按home键后只有5秒钟的后台时间,ios在将这些程序变为暂停状态前给予它们一个非常有限的时间来清除所需清除的内容,之后程序变会被保留在记忆体中以便可以快速的开启它。
与目前盛传的观点相反,暂停状态并不会消耗更多的电量以及系统资源。而当系统中有过多的暂停程序时ios系统将会自动将一部分转为关闭状态。
特殊需求的程序可以达到10分钟
另外,当程序有特殊需求在后台运行更久而并非5秒钟时,speirs使用了instacast做为例子对其进行了讲解,当
instacast正在后台下载podcasts
时它会告诉ios系统它正在下载东西,这样使得ios系统给于其多10分钟的时间而并非5秒钟的时间,一但10分钟时限到达后instacast
将会被强制切换至暂停模式。
当然还有相当一部分的程序是长期在后台工作的,如邮件、音乐、gps、voip、电子报等。这些程序都会一直在后台运行直至它完成它本身的任务。
邮件是最耗电、最占资源的程序
就个人经验之谈,邮件程序是整个ios系统中消耗最多电量以及系统资源的程序,因为邮件程序会一直在后台不停的发送接收请求,而每个请求都会消耗电
量以及cpu使用量。不幸的是唯一能防止邮件件程序这样做的方法就是不使用时关闭所有的程序,或是更改发送请求的频率。不过相系更改了频率后邮件程序将会
失去它真正的意义,因为大部分用户都想在收到信件后马上获得通知。
上面讲的都是ios内置的程序,现在我们以第三方程序skype为例,早期的skype程序就跟mail程序一样会一直耗费系统资源跟电量,不过经过多次的更新后现在已经可以很好的智能控制自己的运行状态了。
开发者应当主动控制程序的状态
所有需要在后台运作的程序都应该编写智能控制代码,一但程序完成所需的运作后应当自动将自己转换为暂停状态。唯一需要用户自己去关闭一个程序是当这个程序不能自动处理自己的后台状态时,而这错在程序本身并非ios上。
若你还在手动管理多任务后台,很明显,你是在浪费你的时间!若苹果商店的天才们告诉你们需要手动关闭,麻烦请纠正他们!