最近看到几篇几年前的文章,关于多任务执行在移动设备上设计。

http://blog.rlove.org/2010/04/why-ipad-and-iphone-dont-support.html

这篇谈到iOS上为什么没有想android那样去做multitasking,他的观点是认为android有着良好的api去保存程序状态,有着一整套复杂的程序组件状态机,以及能够很好的去管理在不同状态之间的切换。而iOS在iphone/iPad上实现这样一套系统会非常复杂,而android则是一开始就考虑好的。

个人认为到应该不是这么回事,苹果的工程师绝不会一个这样的系统都无法在iOS上做出来。只不过双方的设计哲学有所不同。

无论是andorid还是iOS的设计者,在移动设备上用户只能关注于一个应用上这个观点保持了一致。而感觉android是倾向于给予程序更多的自治权利:我提供功能众多,开发者在其中选取自己需要的,所以你的程序你可以选择在后台运行,这是你的权利。

而可以参考apple文档:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4

Apple的风格是:允许程序去申请一小段时间去完成最后的工作(留下遗言),如果你还赖着不肯死,就直接枪毙了。至于可以留下些什么,也是apple限定好的,比如下载,音频,位置定位等。至于别的,啥也别留下。这样的好处是可以控制程序的执行和销毁都在系统的掌握之下。

从apple store和google market的现状就可以看出两者思路的多么不一致。app到apple store都是需要审核而且只能在apple store上发行的,而android app发行的渠道就多了去了,直接下载也是可以的。

下面这篇是android的官方blog里面的文章, 讲android的multitasking的设计理念。可以看到 "all applications are created equal"的哲学,而苹果嘛,恩,自己程序后台跑的好好的呢。

http://android-developers.blogspot.com/2010/04/multitasking-android-way.html