iOS的後台執行和多工處理

2021-07-05 07:39:03 字數 1287 閱讀 2053

ios對後台支援的歷史背景

根據蘋果目前的文件來看,大致可以將ios從最開始到ios7.0後的版本對後台任務支援分為三大階段,分別是:

既然現在大多數的情況都是4.0之後的特徵,下文我們就詳細來看。

1.  「禳星續命」

《三國演義》第一百零三章標題為「上方谷司馬受困,五丈原諸葛禳星」,對三國有點了解的人都知道諸葛亮禳星續命的經典故事。大意是講諸葛亮在五丈原和敵軍僵持,但知道自己命不久矣,為了「酬三顧」希望能夠讓自己再多活些時日以勝此仗,至於結局這裡就不用說了。

那麼當ios(4.0之後)的應用狀態將要從active經由inactive退到background的時候,能不能爭取到一些執行時間來完成「墓碑式」凍結前最後的任務呢?蘋果給了這個機會。

在前面一篇文章「ios應用程式的狀態及其切換(生命週期)」中整理了生命週期相關的方法,在程式進入後台的時候,方法:

會被呼叫從而開始執行後台執行的程式,官方文件中要求此方法需在5秒內結束。

按文件給出的示例,可以給出如下呼叫:

]; // start the long-running task and return immediately.

dispatch_async(dispatch_get_global_queue(dispatch_queue_priority_default, 0), ^);}

這種方式是蘋果推薦的方式,比較優雅。我個人用ios7的真機除錯,預設情況下會在後台跑3分鐘,然後停掉。

2. 真後台和服務

ios從誕生到現在對應用的後台執行一直有所限制,了解蘋果產品的朋友應該都明白,這正是蘋果為了提高使用者體驗而做的取捨,為了手機的資源更合理的利用,而不是被後台執行的「卡死」或者手機電量無辜消耗。

既然傳說中4.0之前的時代都有推送,那麼4.0之後肯定也是要支援的。訊息推送可是把客戶端和伺服器緊密結合起來滿足商業需求的重要利器。除了訊息推送通知,ios也有對應的本地通知。

實際上,除了訊息以外,蘋果的ios對特定的服務也是支援真後台執行的。主要包括:

定位服務,ios的定位服務分為顯著位置變化檢測和高精確度的定位,後者是支援後台定位跟蹤的

voip

藍芽及外部裝置通訊

當然,真後台的服務也不止這些,更詳細的可以參看這裡:

3. ios7.0的新東西

ios7版本,蘋果在後台執行服務和多工處理這塊又增加了一些新東西。按照蘋果文件所述,分為三種方式:

第一點,上面「禳星續命」已經提過,下面主要說下第二點和第三點。

ios7以後,後台執行的服務也新增了2種,分別是:

關於ios後台服務和多工處理的內容,簡要整理到此。

IOS 後台無限執行任務

今天看到這個分享,以後應該會用到,先記下來。首先需要配置info plist檔案,在裡面新建乙個required background modes。這個是乙個陣列,在下面新增如下內容 block uibackgroundtaskidentifier background task backgroun...

實戰iOS7之後臺多工

在wwdc2013中 水果公司把ios7的中後台多工單獨開出來乙個session講述 session 204 what s new with multitasking 其對後台多工的改動如下 list 1.改變了後台任務的執行方式 background task 2.增加了後台獲取 backgrou...

對 iOS 多工的誤解 多工原理

如今,多工這個有趣特性已經成功整合在裝置中,我們如今使用的智慧型手機完全支援多工,這其中有乙個東西尤其功不可沒。這就是蘋果的iphone手機。ios是使用廣泛的令人驚嘆的作業系統。在2010年之後ios 4 變成了多工作業系統。眾所周知,當你開啟乙個應用程式然後退出,它仍然會保留在後台。當然,這會導...