關於iOS多工的一些掃盲

2022-08-05 18:12:15 字數 1168 閱讀 6103

打從這世界出現了作業系統以來,就沒有過所謂真正的“多工”。所謂多工,無非是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 一些常見問題的整理

對於通知,大家想必都不陌生,它是一個單例,允許當事件發生時通知一些物件,讓我們在低程度耦合的情況下,來達到通訊的目的。 通知的優勢 1 不需要編寫太多 ,實現比較簡單 2 對於一個發出的通知,可以多個物件作出反應,即是說通知是一對多的形式 通知的缺點 1 在編譯期不會檢查通知是否能夠被觀察者正確處理...

IOS 一些現象 和 解決方法

1 在ios7之後 帶有scrollview的頁面 返回時 整體會下滑 45的高度 原因 ios自帶的優化, 解決的方法如下 self au...

B21 iOS 開發的一些tips(下)

ld symbol s not found for architecture x86 64 clang error linker command failed with exit code 1 use v to see invocation 檢查一下匯入sdk方式是否有問題,刪除後重新匯入即可解決。...