# iPhone OS 4\.0 没有带来第三方多任务

- 作者：李楠
- 发布时间：2010-04-10 07:00
- 分类：公司
- 原文：https://www.ifanr.com/9444

by [李楠 (newkhonsou@twitter)](http://twitter.com/newkhonsou "newkhonsou")

[@xuzhe](http://twitter.com/xuzhe),[ @overboming](http://twitter.com/overboming),[ @neso](https://twitter.com/neso)对此文亦有贡献。

注意：本文叙述的，不一定是**事实。**而是基于 Keynote 的**猜想**。 OS 4.0 多任务的机制和能力，还需要拿到 SDK 的开发者们进一步确认。多任务后的程序，也可能允许常驻内存并全功能动作。到底如何，相信很快就有分晓。

## iPhone OS 1.0 的多任务

2007年1月8号， Jobs 站在讲台上，背后的 Keynote 上写个大字：Multitasking 。

![Picture 8.png](https://s3.ifanr.com/wp-content/uploads/2010/04/Picture-8.png)

底下的观众一片欢呼。Jobs 谦虚地笑了。

然后，这些观众回到家里，坐在椅子上冷静下来发现：原来只有苹果自己的少数程序可以多任务！

看网页的时候， iPod 可以放音乐。 豆瓣电台却不能。你可以象 Nike 那样，和苹果拉拉关系，最终， Nike+ 这个第三方应用，也得到了多任务的权力。或者，你可以象 Google 那样，和苹果展开竞争。结果， Google Voice 甭说多任务了，连上架都不行。

## Push Notifications 不是多任务

2009年3月17号， 苹果的人站在讲台上，背后的 Keynote 上写个大字：Push Notifications 。

<a>![](http://images.weiphone.com/attachments/day_090318/20090318_d4c4c59cd71874555037WA20i2vTf0D4.jpg.thumb.jpg)</a>

为什么要多任务呢？我们给你 Push Notifications！ 第三方程序可以把自己要做的事情委托给系统。 然后自己退出，由苹果自己的进程，完成后面的操作。

底下的观众一片欢呼。Jobs 不知在哪里偷偷的笑了。

然后，这些观众回到家里，坐在椅子上冷静下来发现：原来这东西还是不能代替多任务。

豆瓣电台仍然无法背景播放， GPS 导航的时候，你也不能去查查 Email 。

## Push Notifications 是多任务

2010年3月8号， 苹果的人站在讲台上，背后的 Keynote 上又写了个大字：Multitasking 。 （我为什么要说又字？）

<a>![](http://images.huffingtonpost.com/gadgets/slideshows/5923/slide_5923_79686_large.jpg)</a>

Jobs 说，我们终于找到办法支持多任务了！苦等了好几年的观众再次一片欢呼， Jobs 再次谦虚地笑了。

这回，不用等到他们回到家里研究 SDK 了，苹果的 Keynote 本身就有线索：苹果支持7个多任务 API ，Push Notifications 就在其中。

<a>![](http://www.blogcdn.com/www.engadget.com/media/2010/04/iphone-os-4-0204-rm-eng.jpg)</a>

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 那个遍布美女和红酒的天堂，还遥远的很。今天，苹果只是领我们朝那个方向，悄悄挪了几步。
