雙擊Home ,會在 iPhone 底部呼出多任務切換條。用戶在上面選擇程序,即呼即出,簡潔易用。甚至,完全不知道雙擊 Home ,你一樣享受多任務的絕大部分好處。 iPhone 之所以幾歲的小孩都會用,正源于軟硬件上的這種簡潔。
但是,隨著功能的增加,軟件復雜度的增加不可避免,這是軟件開發(fā)的熱力學定律:墑的增加不可避免,軟件生命周期的最后,難免歸于混沌。還記得 Symbian 難以挪動對話框的八卦?或者 Palm OS5 那些謎一樣的重啟動?
扯的有點遠,本文想說的是蘋果這個看似簡潔的多任務。
iOS 的三種多任務
第一種:保持現(xiàn)場
“保持現(xiàn)場”并非多任務,而是一種看起來像多任務的單任務。
按下 Home 后,程序自己保存狀態(tài)。下次呼出,自己恢復保存下來的現(xiàn)場�?雌饋砗蜎]有退出過差不多。
這并非 iOS4 的新特性, Tweetie 在 iOS4 之前就支持了。
第二種:iOS4 多任務
“iOS4 多任務”是受限制的多任務。按下 Home ,程序切換到后臺時仍保持在內(nèi)存中,可以執(zhí)行一些系統(tǒng)允許的動作:比如播放音樂。
iOS4 多任務的程序如果在后臺無動作,那么表現(xiàn)和“保持現(xiàn)場”的程序差不多。有些程序,比如 Twitter for iPhone ,在“保持現(xiàn)場”的同時支持了 iOS4 多任務。
iOS4 多任務比“保持現(xiàn)場”更快,并且可以后臺動作。壞處是會占用內(nèi)存。而且,萬一在后臺被殺掉,又不支持“保持現(xiàn)場”,那么再載入會丟掉上次的狀態(tài)。比如那個優(yōu)雅但是功能不足的推特客戶端新銳: Weet 。
第三種:真多任務
Safari ,Mail 等程序有真正的多任務權限:在后臺可以無限制動作。
對手機而言,不限制這種多任務有些缺點。一個未知的程序可能會在后臺執(zhí)行很重的任務,讓電力在用戶無察覺的情況下消耗光。另外,安全性也不是很靠譜。
所以蘋果僅允許少數(shù)幾個程序擁有這個權限。甚至蘋果自己也沒有濫用: Messages , Photos 都是蘋果的嫡系,卻僅支持 iOS4 多任務而已。
內(nèi)存
說多任務會牽扯些內(nèi)存管理。 iPhone 不能用硬盤(閃存)虛擬內(nèi)存,所以內(nèi)存的容量是限制死的。
不支持 iOS4 多任務和真多任務的程序,按下 Home 之后 10 秒左右會被殺掉,內(nèi)存釋放。
iOS4 多任務程序通過 Home 退出后仍會占用內(nèi)存。但是系統(tǒng)也隨時會把他殺掉。尤其是在支持多任務,卻悲劇性的只有256m 內(nèi)存的 iPad 和 iPod touch 4 上。(不過, iPhone4上, iOS4 的多任務在程序真正凍結之后(后臺,無動作),似乎會被壓縮或者寫入磁盤并釋放內(nèi)存的處理。)
真多任務?有些后臺服務是安全的,比如通知管理。有些就沒那么幸運了, Mail, Safari 都有被干掉的可能。
復雜
在內(nèi)存,屏幕和電力都嚴格受限的手機上面,蘋果在追求一個不可能的任務:
保持多任務優(yōu)勢的同時,避免消耗過多電力。
為此,在多任務管理上,蘋果獨自發(fā)展了一個挺復雜的方案。 Android 提供虛擬機和自動內(nèi)存管理等更多先進特性,但是其實現(xiàn)未必比蘋果的這套更復雜。
而且,不僅軟件,硬件上也下了功夫: iPhone4 高度集成了各種元件,在狹小的空間內(nèi)為電池留出了足夠的空間。
當然,網(wǎng)絡服務的部分, iPhone 的通知構架也為此貢獻了力量。
寫 Tweet 的時候,可以收到個通知,然后切換出去看一眼郵件 Copy 點東西過來真的這么難?
需要各種不同的真假多任務類型?
硬件的高度集成?
還要在美國部署一堆高性能的網(wǎng)絡服務器來推送消息?
別忘了手機上,多任務和電力幾乎分別處在蹺蹺板的兩頭。而蘋果的目標,卻是要兩頭討好�,F(xiàn)有電池技術的限制下,為了兼顧電力,這種復雜性可能真的是必要的。
(當然,很多人認為讓用戶多揣塊電池出門也不是不可接受的。)
簡潔
而且,蘋果又在追求另一個不可能的任務:讓復雜的方案,表現(xiàn)的簡潔。
有些人要怒了,又多任務,又省電,又簡潔,好處怎么都讓蘋果占了呢?沒辦法,除了技術,他在這方面還真的又~有一手。
善意的謊言
iOS 完全掩蓋了多任務的不同狀態(tài)。系統(tǒng)里沒有任何一個地方能讓用戶區(qū)分出多任務的類型:所有程序都在一個地方,沒有多任務狀態(tài)標記,操作也沒有不同:Springboard 呼出,Home 退出。
掩蓋多任務狀態(tài)相當于一個善意的謊言,這個不難。據(jù)說不少四歲寶寶都已經(jīng)是過來人了。
圓謊
比較說謊,圓謊才有點挑戰(zhàn)。要知道,憑生活大爆炸里 Sheldon 的智商,都圓的一塌糊涂。
掩蓋多任務狀態(tài)后,就需要保證動作的一致性。雙擊 Home 呼出多任務切換欄你會發(fā)現(xiàn)個有趣的設計:壓根不能多任務的程序,比如 Instapaper ,也會出現(xiàn)在“多任務”切換欄中。
工程師可能不滿意,不占內(nèi)存,沒有動作,卻放個快捷方式? 用戶在這滿懷希望的刪掉 Instapaper ,卻沒有終結程序釋放內(nèi)存,這不是是忽悠用戶嗎?
首先, iOS 是個圓謊高手:用戶無從知道內(nèi)存狀態(tài)。更重要的,作為一個不知道多任務狀態(tài)的用戶, Instapaper 出現(xiàn)在這才是合理的。
正確定義問題
“多任務”問題的關鍵是: 用戶到底想通過多任務得到什么效果?操作系統(tǒng)教科書的作者再 NB ,和用戶比較,他的定義也不重要。知道你到底要什么,取舍才有余地。
最后的話
的確,蘋果很善于說“不”。但這顯然不是他的全部本領。隨著 iOS 的進化,蘋果給我們演示了一個更加高難度的動作:
復雜的解決問題,簡潔的表現(xiàn)結果。
相關閱讀