关于iOS多任务的一些扫盲

打从这世界出现了操作系统以来,就没有过所谓真正的“多任务”。所谓多任务,无非是CPU速度够快而足以支撑极短时间内在多个进程内动作罢了。而所谓的“单任务”,无非是只能让当前任务独享资源罢了。

简单来说,iOS 4 app类型可以分为三种:
1. 保存现场。按下Home键10秒内直接杀死进程,并释放内存。
2. iOS支持的“多任务”。按下Home键转入多任务状态,保留在内存中,但只能系统允许的动作:比如GPS,比如VoIP,比如Streaming Music等等。
3. 真正的桌面级别的多任务。只有Safari/Mail是,苹果嫡系大都都不是。这个级别的app在后台没有任何限制动作。

无限制动作的程序,一会在用户无察觉的情况下耗光电力,二会有安全上面的问题(君还记得那些个在后台依旧默默发送你的个人消息程序吗?)
顺便提一句,后两种占用内存的app,也会在任意时间从内存中被砍掉,取决于你是否动用了其它app而导致内存不足。
真正不会被砍掉的后台,只有苹果那个通知系统。

其实可以回顾一下iOS是怎么一步步引入现在这个机制的。
刚出生,什么都没有,单纯的单任务。
iPhone OS 3.0,引入通知架构,当年全部机型可用;Android晚了一年,2.2才有此功能,到这个时候相信才有90%上下机器用上。
iOS 4.0,引入有限制的后台多任务。

搞这么复杂干嘛?直接像Android一出生那样所有app一个小虚拟机,无任何限制动作,让根本没有内存管理经验和资源消耗概念的全世界最大民工群Java程序员们写的app任意地跑着吧!
答案只有两个:电力,安全。安全不说,如何在保持多任务优势的同时,避免消耗过多电力,苹果花了很多心思;而不是像webOS/Android一样,简单粗暴桌面级的多任务。iPhone 4甚至在硬件上面也下了苦功,利用3D层叠技术组装A4芯片,内部元件高度集成,并把天线移至体表,增加内部电池空间。结果就是iPhone 4 1420 vs. i9000 1500。

其实至iPhone OS 3,已经足够应付大部分应用了。用户根本无从知道app的实际运行状态,保存现场让app看起来不像是刚打开一样,通知系统又可以在后台默默推送消息。事实上,当前95% iOS app依旧只有保存现场 + 通知系统这样的组合,比如很多twitter客户端,大部分人根本不会注意到它不是真正意义上的“多任务”。很震撼的事实,但确实95%的应用场景根本不需要所谓真正的“多任务”。

但是时代在变。真正需要多任务的东西出现了:电台要stream,IM要stream,GPS要stream,多任务必须提上日程。iOS 4加进了,WP7刚刚加进了,Android/webOS打一出生就有。从本质来说,iOS/WP7/Android/webOS跑在内存中的后台程序,唯一的区别就是,iOS/WP7限制了它可以做的事(这就是为什么它们一出生都没有多任务的原因,这个架构很复杂,不是几百行中文字可以说明白的),而Android/webOS没有;从技术上面来说,iOS/WP7/webOS三者架构相当,Android独立门户。

于是很可笑,有无限制,成了真“多任务”和伪“多任务”的区别;而后者架构更复杂,可以套用一句“吃力不讨好”。
为什么要做吃力不讨好的事?答案依旧在上面,电力和安全。当然你可以说iPhone电力也没好到哪里去,安全也就一般般嘛。暂且抛掉这两样不谈,实际看看iOS有限制后台app,和Android完全无限制后台app有什么不同:

相信我,最终你会发现iOS上最令人诟病的app,是那些不支持标准协议的软件平台商们,比如腾讯。因为iOS后台允许的动作,已经覆盖了全部大大小小的通信开源协议。

随便提提腾讯的QQ协议:
大家都用过很多msn/gtalk客户端,但是可能很多人都没有用过非腾讯QQ客户端(曾经有过,但是腾讯把他送进了监狱)。腾讯在QQ协议上面所做的事,一是不开放,二是隔两三个月就换一次协议,三是封杀全部三方客户端。

那么最终多任务的对比无非是,拥抱标准 vs. 允许私有。苹果作为一个弱势厂商,一直以来受够了私有标准的苦。比如一直到现在都没法用非IE支付的中国网银们,正是微软自己私有标准的后果,也是苹果为什么要开做开源WebKit的原因。软件可以封闭,硬件可以封闭,但是要拥抱标准,这是苹果的理念。

结论很简单:如果你要用一些私有协议的app(在中国我想大部分人都要用QQ的),请别看别买别关注iPhone;如果你用的都是一些拥抱标准的app,那么推荐你使用iPhone,因为它更省电更安全。关于说iOS多任务有什么用:除了不能支持私有协议外,和Android一样。

posted @ 2012-07-16 18:00  怕腥的鱼  阅读(245)  评论(0编辑  收藏  举报