iPhone OS 4.0 没有带来第三方多任务
@xuzhe, @overboming, @neso对此文亦有贡献。
注意:本文叙述的,不一定是事实。而是基于 Keynote 的猜想。 OS 4.0 多任务的机制和能力,还需要拿到 SDK 的开发者们进一步确认。多任务后的程序,也可能允许常驻内存并全功能动作。到底如何,相信很快就有分晓。
iPhone OS 1.0 的多任务
2007年1月8号, Jobs 站在讲台上,背后的 Keynote 上写个大字:Multitasking 。
底下的观众一片欢呼。Jobs 谦虚地笑了。
然后,这些观众回到家里,坐在椅子上冷静下来发现:原来只有苹果自己的少数程序可以多任务!
看网页的时候, iPod 可以放音乐。 豆瓣电台却不能。你可以象 Nike 那样,和苹果拉拉关系,最终, Nike+ 这个第三方应用,也得到了多任务的权力。或者,你可以象 Google 那样,和苹果展开竞争。结果, Google Voice 甭说多任务了,连上架都不行。
Push Notifications 不是多任务
2009年3月17号, 苹果的人站在讲台上,背后的 Keynote 上写个大字:Push Notifications 。
为什么要多任务呢?我们给你 Push Notifications! 第三方程序可以把自己要做的事情委托给系统。 然后自己退出,由苹果自己的进程,完成后面的操作。
底下的观众一片欢呼。Jobs 不知在哪里偷偷的笑了。
然后,这些观众回到家里,坐在椅子上冷静下来发现:原来这东西还是不能代替多任务。
豆瓣电台仍然无法背景播放, GPS 导航的时候,你也不能去查查 Email 。
Push Notifications 是多任务
2010年3月8号, 苹果的人站在讲台上,背后的 Keynote 上又写了个大字:Multitasking 。 (我为什么要说又字?)
Jobs 说,我们终于找到办法支持多任务了!苦等了好几年的观众再次一片欢呼, Jobs 再次谦虚地笑了。
这回,不用等到他们回到家里研究 SDK 了,苹果的 Keynote 本身就有线索:苹果支持7个多任务 API ,Push Notifications 就在其中。
OS4 发布之前,可有人谁认为这种机制是多任务? Push Notifications 如何变成多任务了呢?
7个服务 ,两个分类
苹果把 7 个服务列在一起,而在我看来,他是两类。
“快速切换”单独的。他很可能是一种程序退出时,保存现场的技术。切换到后台的第三方程序退出前,把状态保存在磁盘,或者内存中。如果保存在磁盘上,类似的特性 Android 也支持。如果保存在内存中,更像是系统把这个程序冻结了。程序还在内存中,但是功能被限制了。
剩下的6个是一类。 很可能都是用来让第三方程序把任务委托给系统用的。既然切换到后台的时候,程序被冻结了。那么需要在后台完成的功能,就只好委托给系统来做了。比如: Push 。所以, Push Notifications 也在其中就不奇怪了。和 OS 3.0 时候一样的技术,一样的思路。 OS4.0 带来的区别仅仅是:可以委托的给系统的任务,有更多的种类。(除了可以把推送的工作委托给系统,还可以委托音频播放,VOIP等等)。
那么,第三方程序,比如一个音乐播放 App 将要被切换到后台的时候,可以通过那些服务 ,把需要后台的任务委托给系统:这里就是音乐播放,然后自己被冻结。用户在前台操作新的程序,而播放音乐的功能,还是有的。
iPhone OS 4 没有带来第三方多任务
如果 Push 的这种委托机制是多任务?那么就不是从 OS 4.0 开始支持的。 OS 3.0 带来了第三方多任务。
如果 Push 的这种委托机制不是多任务?OS 3.0 不支持第三方多任务。同理, OS 4.0 也不支持。因为多出的那几个服务 ,和 Push 一样的原理。
当然,苹果可以说,更强大的委托机制 + 程序的冻结/保持现场,才是多任务。不过,如果我按照这个思路去理解,本文就没有一个哗众取宠的标题了。:)
苹果的高度
抛开上面的斤斤计较,平心而论,个人很欣赏苹果的这种实现方式。
开放更多可以委托的系统 服务 ,可以让用户得到非常接近多任务的使用感受。同时,又节省电力和内存。这一切,都已经在 Push Notifications 上面经受了考验。
苹果无疑汇集了最聪明绝顶的一群人,Jobs 的脑门可以为证。但是这种解决方案,已不是由的智商高低决定的了。
苹果他并不把“多任务”看作一个操作系统,或者手机的软硬件问题。所以,多任务不是 OS 是否允许多第三方进程常驻后台,也不是系统是否有 Swap 机制。
苹果在“人”,“环境”,“设备”三者之上的高度之上看待“多任务”。这时,“多任务”的问题变为:手机能否为“人”,同时完成多个任务?
手机,最终是给“人”使用的。对用户来说,追究多任务“是”什么,没有意义。用户真正感受到的,是多任务“像”什么。
既然第三方程序可以把任务委托给系统,让他表现的“像”在多任务,又能节省电力,何必非要追求所谓“真正的第三方多任务”?
所以,多任务这个问题上,即使 Google 拥有更多的技术 IQ ,(真正的多任务,更早实现保持现场。)苹果仍然可以搞出更出色的用户体验。Jobs 完全有资格套用 Goolge 的名言调侃下 Android :
对比 Google 的员工,我们并没有更多 IQ ,但是,我们看问题更加透彻。
(而悲剧了的 Windows Phone 只好承认,自己既没有智商 ,也缺乏智慧。)
最后的话
想象力特别丰富的人,也许会从 “像”这个字中,看到一丝不安。
不过,Matrix 那个遍布美女和红酒的天堂,还遥远的很。今天,苹果只是领我们朝那个方向,悄悄挪了几步。