打從這世界出現了作業系統以來,就沒有過所謂真正的「多工」。所謂多工,無非是cpu速度夠快而足以支撐極短時間內在多個程序內動作罷了。而所謂的「單任務」,無非是只能讓當前任務獨享資源罷了。
1. 儲存現場。按下home鍵10秒內直接殺死程序,並釋放記憶體。
2. ios支援的「多工」。按下home鍵轉入多工狀態,保留在記憶體中,但只能系統允許的動作:比如gps,比如voip,比如streaming music等等。
無限制動作的程式,一會在使用者無察覺的情況下耗光電力,二會有安全上面的問題(君還記得那些個在後台依舊默默傳送你的個人訊息程式嗎?)
真正不會被砍掉的後台,只有蘋果那個通知系統。
其實可以回顧一下ios是怎麼一步步引入現在這個機制的。
剛出生,什麼都沒有,單純的單任務。
iphone os 3.0,引入通知架構,當年全部機型可用;android晚了一年,2.2才有此功能,到這個時候相信才有90%上下機器用上。
ios 4.0,引入有限制的後台多工。
答案只有兩個:電力,安全。安全不說,如何在保持多工優勢的同時,避免消耗過多電力,蘋果花了很多心思;而不是像webos/android一樣,簡單粗暴桌面級的多工。iphone 4甚至在硬體上面也下了苦功,利用3d層疊技術組裝a4晶元,內部元件高度整合,並把天線移至體表,增加內部電池空間。結果就是iphone 4 1420 vs. i9000 1500。
但是時代在變。真正需要多工的東西出現了:電台要stream,im要stream,gps要stream,多工必須提上日程。ios 4加進了,wp7剛剛加進了,android/webos打一出生就有。從本質來說,ios/wp7/android/webos跑在記憶體中的後台程式,唯一的區別就是,ios/wp7限制了它可以做的事(這就是為什麼它們一出生都沒有多工的原因,這個架構很複雜,不是幾百行中文字可以說明白的),而android/webos沒有;從技術上面來說,ios/wp7/webos三者架構相當,android獨立門戶。
於是很可笑,有無限制,成了真「多工」和偽「多工」的區別;而後者架構更複雜,可以套用一句「吃力不討好」。
那麼最終多工的對比無非是,擁抱標準 vs. 允許私有。蘋果作為乙個弱勢廠商,一直以來受夠了私有標準的苦。比如一直到現在都沒法用非ie支付的中國網銀們,正是微軟自己私有標準的後果,也是蘋果為什麼要開做開源webkit的原因。軟體可以封閉,硬體可以封閉,但是要擁抱標準,這是蘋果的理念。
對 iOS 多工的誤解 多工原理
如今,多工這個有趣特性已經成功整合在裝置中,我們如今使用的智慧型手機完全支援多工,這其中有乙個東西尤其功不可沒。這就是蘋果的iphone手機。ios是使用廣泛的令人驚嘆的作業系統。在2010年之後ios 4 變成了多工作業系統。眾所周知,當你開啟乙個應用程式然後退出,它仍然會保留在後台。當然,這會導...
對 iOS 多工的誤解 多工原理
如今,多工這個有趣特性已經成功整合在裝置中,我們如今使用的智慧型手機完全支援多工,這其中有乙個東西尤其功不可沒。這就是蘋果的iphone手機。ios是使用廣泛的令人驚嘆的作業系統。在2010年之後ios 4 變成了多工作業系統。眾所周知,當你開啟乙個應用程式然後退出,它仍然會保留在後台。當然,這會導...
關於IOS的多工以及記憶體管理
一 看了很多fy為自己的可用記憶體是350mb還是380mb糾結,為了多優化出一點可用記憶體費腦筋。這種看法是不對的。所謂空載和滿載,是對作業系統來說的。而對於記憶體晶元電路而言,看到的只是0和1,就算是空閒的記憶體單元,也有0和1在裡面,它必須忠實地儲存所有資料,iphone4有512mb的記憶體...
iOS中的多工
ios7的多工 後台任務 uibackgroundtaskidentifier backgroundupdatetask dispatch async dispatch get global queue dispatch queue priority default,0 void beginback...
IOS4的多工機制概述
bgtask uibackgroundtaskinvalid 複製 2.把自己要執行的任務以block的形式新增到系統的非同步任務佇列中去 dispatch async dispatch get global queue dispatch queue priority default,0 複製 sp...