首页 > 代码库 > ios后台机制
ios后台机制
最近在做关于界面信息保存的模块,查阅相关的资料,对ios的后台机制有一个系统的了解,现在总结出来:
IOS是“伪后台”,iOS 中所谓的“后台驻留”并不是指“执行中的程序”,而是“最近使用过的程序”。
关闭--------这个程序以彻底关闭或尚未被开启
待用--------程序处于开启状态,但是并未收到任何指令(例如:程序开启但用户锁定了机器)
使用中----正常使用中的程序
后台--------程序不在开启状态但仍然在后台运行代码
暂停--------程序仍然在使用内存但并未运行代码,程序在关闭后只有5秒的处理时间
事实上你根本就不需要管理 iOS 的多任 务后台,因为你所看到留在后台当中的程序并非真正的在运行,其实多任务后台并不是实质上的任务管理器,更确切的说,更像是类似浏览器历史记录的东西,只不过专门针对程序的记录而已。总体来讲多任务后台只是一个让用户可以 在最近打开的程序中做切换的一个工具而已,对以上理论最好的证明就是当你重启你的 iPhone后,在多任务后台中还是会显示所有 你最近开启过的程序,显然他们不可能在运行。所以当你按Home键离开程序后,你根本不需要再去管多任务后台的东西,因为有 90%的程序都会在你按Home键离开程序后停止运作。
技术上来讲,所有的程续在按Home键后 只有5秒钟的后台时间,iOS在将这些程序变 为暂停状态前给予它们一个非常有限的时间来清除所需清除的内容,之后程序变会被保留在 记忆体中以便可以快速的开启它。特殊需求的程序可以达到10分钟。另外,当程序有特殊需求在后台运行更久 而并非5秒钟时,Speirs 使用了 Instacast 做为例子对其进行了讲解,当 Instacast 正 在后台下载 podcasts 时它会告诉iOS系统它正在下载东西,这样使得iOS系统给于其多10 分钟的时间而并非5秒钟的时间,一但10分钟 时限到达后 Instacast 将会被强制切换至暂 停模式。当然还有相当一部分的程序是长期在后台 工作的,如邮件、音乐、GPS、Voip、电子 报等。这些程序都会一直在后台运行直至它完成它本身的任务。