麦特·纽伯在 TidBITS 写的这篇文章很值得一读。简单说,大家都在谈论的 iOS 4 的多任务功能暂时还没什么用,因为目前只有很小一部分第三方软件支持 iOS 4 的后台运行设计。
iOS 4 的所谓多任务并不是传统意义上的多任务,即任何程序都可以自由地在后台运行。苹果开放给第三方软件开发者的后台运行接口只包括音频播放(例如 Pandora 等网络电台软件)、地理位置侦测(例如 GPS 软件)和网络电话(例如 Skype)等几个功能。
当你在 iOS 4 里双击 Home 按钮时,会看到一个「抽屉」式的空间出现在屏幕下方。很多人对此不解:这块空间里好像什么软件都有,怎么可能这么多软件同时在 iPhone 上后台运行呢?没错,这不可能,这些软件也并不是全都在后台运行。
在 iOS 4 里,如果你单击 Home 退到桌面,之前在运行的软件并没有退出,而是被「冻结」。它虽然被置入后台,处于凝滞状态,但仍然在运行,之前分配给它的那些系统资源仍然在位。因此,当你重新回到这个软件时,它可以立即恢复到上次退出时的状态。这就是所谓的快速切换软件功能(fast app switching),也是 iOS 4 的多任务功能的核心所在。
处于冻结状态的软件可以做某些事情,例如上面说的音频播放等等,但并不是什么都能做。Instapaper 的开发者马可·阿蒙前阵子就说过,很多人希望 Instapaper 能利用 iOS 4 的多任务特性,实现后台下载文章的功能——因为他们经常在进地铁或上飞机前忘记手动刷新 Instapaper。可惜,目前的 iOS 4 不允许他这么做。
了解了这一点,就可以知道双击 Home 调出的那个抽屉只是一层视觉介面,跟 Mac OS X 上 Command + Tab 调出的那个切换软件的介面一样。它比单击 Home 回到桌面再打开别的软件要方便,但即便是单击,上述「冻结」过程依然适用。
那么,iOS 4 上的第三方软件在什么情况下会真正退出?有三种情况:
一、系统为了省出内存而终止某个程序。
二、用户长按「抽屉」中的软件,点左上角的减号手动终止程序。
三、尚未为 iOS 4 重新编译的第三方软件是无法被冻结的,只要你退出了这个软件,它就直接被终止了。
纽伯指出,上述第三点是关键。等待第三方软件为 iOS 4 重新编译需要时间:开发者更新代码的时间,以及提交软件到 App Store 并等待苹果审核的时间。如本文开头所说,目前为止,完成了这件事的第三方软件是很少的,我能想到的只有 Pandora 和 Twitter for iPhone。连苹果在发布会上为其背书的 Skype 都尚未更新。当然,这只是时间问题。
如果你已经用上了 iOS 4,但没发觉传说中的多任务有什么用的话,希望以上的解释能令你满意。
9 Comments so far
Leave a comment
Fields in bold are required. Email addresses are never published or distributed.
Some HTML code is allowed:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs must be fully qualified (eg: http://apple4.us),and all tags must be properly closed.
Line breaks and paragraphs are automatically converted.
Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.
跟塞班的多任务处理差不多?
昨天已读,Apple对用户体验的完整性追求真是到位,这里还有篇类似的分析iPhone Multitasking
“Instapaper 的开发者马可·阿蒙前阵子就说过,很多人希望 Instapaper 能利用 iOS 4 的多任务特性,实现后台下载文章的功能——因为他们经常在进地铁或上飞机前忘记手动刷新 Instapaper。可惜,目前的 iOS 4 不允许他这么做。”
这段不理解,tweeter 不也是后台运行,自动下载新推吗
这两天我就一直在疑惑,iOS 4 的多任务似乎是假的。
对我来说,iOS 4 的多任务没带来好处,反倒增加了手动关闭后台程序的步骤。没有多任务功能的程序,为何要双击后显示,还是感到疑惑。
对于“三、尚未为 iOS 4 重新编译的第三方软件是无法被冻结的,只要你退出了这个软件,它就直接被终止了。”我用模拟器试了一下,我的程序不用任何改变就可以在iPhone 4的模拟器上实现“冻结”,即单击home键退出,再双击调出抽屉,点击我的程序:保持了退出时的状态。
也许是我哪里疏忽了
感觉这个「冻结」的行为是UNIX的bg命令的效果。只不过iOS把其缺省化了。
补充:单击home退出后,不用双击调出抽屉,直接点刚退出的程序就可以看到,仍然保持了退出时的状态
貌似QQ都能在后台状态推送信息,但是重新打开程序还是需要再次登陆。
升级了os4只有,电池用得更加快了。现在估计一天都快撑不了了。而且很多app自己还没有更新,所以现在的切换只是直接导致其他app停止运行了。平时都只能把3G关掉只用edge,再加上at&t这3G信号,我都无语了。我旁边的同学在考虑降级了。是不是要用iphone4才能比较好地匹配这os,3Gs这老马拉不动呀。