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