當前位置: 華文問答 > 數位

為什麽iOS偽後台,但是有很多軟體也會在後台一直執行?

2015-12-26數位

iOS是偽後台沒錯,但是那是很多年前的事了。

大概是iOS3的時候,iOS引進了push notification。實作了套用即使不啟動也能收到推播訊息。

iOS4的時候,引進了後台墓碑,實作了多工功能。後台套用以墓碑的形式保存在記憶體中,使用者可以快速恢復。當記憶體不夠的時候,系統會自動結束最早的應用程式。

這一時期,一些特殊型別的套用也是可以在背景執行的,比如後台音訊播放類,VoIP類,newsstand,位置服務等。

然後是2013年釋出的iOS7,對多工功能進行了極大的增強。

後台任務

iOS7以前的套用退到後台後是允許執行一段時間的。但是iOS7開始,一旦手機休眠,後台套用將被盡快暫停。之後系統會在特定時間進行系統套用的操作被喚醒時(比如檢查信件或接到電話),將之前暫停的後台套用一起執行。這樣,系統就不會單獨為第三方套用而使手機處於活動狀態,從而延長了待機時間。

後台獲取(background fetch)

iOS7以前的套用在後台是不能獲取資訊的。套用必須再開啟的時候才能聯網獲取資訊。iOS7以後,套用在後台就可以直接獲取網路上的資訊。比如天氣可以在後台獲取資訊進行重新整理,微信也可以在後台自動更新朋友圈的資訊。不過同樣為了保證續航,更新的間隔時間由系統根據使用者使用情況自行決定,不會讓第三方套用隨意的在後台啟動和獲取資訊的。

推播喚醒(remote notifications)

iOS7以前,當你收到推播訊息時,你需要先開啟套用,等待套用從網路上獲取推播的資訊之後,才能將資訊呈現出來。而iOS7改變了這一過程。當系統收到推播訊息時,不是首先提醒使用者,而是喚醒對應的套用,讓套用在後台獲取對應的資訊。當資訊處理完成後,再提醒使用者。一個很小的改變,但是可以很大的提升使用者體驗。同樣,iOS系統也會限制這種推播訊息的頻率,防止系統被頻繁喚醒影響續航。

後台傳輸(background transfer services)

iOS7以前,應用程式在大量數據的上傳下載這方面限制是比較多的。套用只能在前台進行這種數據傳輸,你不能做其他事情。因為一旦退到後台之後,套用只能被允許執行一段時間(最長10分鐘),很難完成這種大量數據的傳輸。而iOS7推出了後台傳輸功能,套用在退到後台之後,可以將這種上傳和下載數據交給iOS系統來維護和管理。這種後台數據傳輸沒有時間的限制,傳輸過程中使用者也可以繼續使用其他套用。同樣為了保持電力續航和保護數據流量,這種後台傳輸僅限WIFI網路。

可以看出,蘋果非常用心,采用了非常復雜的設計思路,目的就是為了實作真後台才能實作的那些功能(推播,後台更新,上傳下載等功能其實都有了),同時又不讓後台套用影響耗電,最大程度的保證手機續航能力。 而這一切,是兩年前的iOS7就推出的功能了。(居然還有人說iOS7主要改動就是界面?)

所以,iOS是有後台的。只是很多人對iOS的後台印象其實還停留在兩年以前。