曾幾何時,iPhone 手機以不殺后臺進程聞名。在安卓諸多品牌受困于后臺進程之際,iPhone 手機卻能保留大量后臺進程,隨意打一個視頻軟件,切換十幾個 App 之后后臺依然還在,甚至連播放位置都與之前一模一樣。
然而,近幾年不少 iPhone 用戶發(fā)現(xiàn),蘋果手機似乎失去了當初的魔力。在使用過程中,常常遇到殺后臺問題。比如打開 iPhone 玩游戲,突然彈出一條微信消息,切出去回復消息,再切回游戲發(fā)現(xiàn)游戲后臺已經(jīng)被強制關閉,需要重新登錄進入游戲。
對于手游愛好者來說,“殺死”后臺進程這一行為簡直難以接受。正在進行的游戲,可能因為后臺進程被強制關閉而失敗。除了內存占用較大的游戲,微信、QQ、微博等常用軟件也經(jīng)常被殺死后臺進程。曾經(jīng)有小伙伴跟小黑吐槽,“iPhone 現(xiàn)在殺后臺也太嚴重了吧,我微信一天啟動十幾次,孤獨小人看地球的照片我都看膩了”。
復雜的后臺機制
從以不殺后臺進程聞名到屢屢殺后臺,期間 iPhone 手機究竟經(jīng)歷了什么?其實,iPhone 手機原先不殺后臺,主要功勞在于墓碑機制。
所謂墓碑機制,也就是當一個程序被系統(tǒng)關閉后,系統(tǒng)允許這個程序給自己立一個“墓碑”,記錄著自己“生前”的模樣。等到再次使用時,系統(tǒng)會照著它墓碑上的描述,從閃存中加載到內存中去。
換言之,安卓系統(tǒng)是“真后臺”,后臺 App 會占用大量系統(tǒng)內存。iOS 系統(tǒng)是“假后臺”,前臺獨占內存空間,后臺應用會交換到手機的閃存,保存“關閉”前的狀態(tài),釋放占用的硬件資源,切換后臺應用時,從閃存直接調用到內存。我們手勢上滑呼出的 iPhone 多任務界面,其實只是近期使用過的 App 列表與快捷方式。
按照墓碑機制的原理,iPhone 似乎可以無限制擴大后臺常駐應用,只要保留“假后臺”,殺后臺問題就不會出現(xiàn)。然而,真實世界里不會出現(xiàn)如此完美的機制,原因在于墓碑機制的缺點。
墓碑機制并非蘋果獨有,微軟曾經(jīng)的 WP 系統(tǒng)也有墓碑機制。在 WP7 系統(tǒng)下,微軟禁止任何第三方應用在后臺運行,這樣就不耗費運行內存與處理器資源,等到切換應用時,之前的應用會恢復到關閉之間的狀態(tài),也就是墓碑機制。
然而,墓碑機制決定了應用進入休眠狀態(tài),無法與外界產(chǎn)生聯(lián)系。因此,蘋果對墓碑機制進行修正,在應用完全進入“墓地”之前,蘋果還給它多種選擇。在 iOS 系統(tǒng)中,應用狀態(tài)分為五類,分別為未運行、不活躍、活躍、后臺與掛起。
未運行狀態(tài)即完全關閉狀態(tài),活躍狀態(tài)意味著應用正在使用。不活躍狀態(tài)意味著 App 停止運行,但是內存依然占用,用于保持當前狀態(tài)。后臺意味著應用進入后臺狀態(tài),一般會持續(xù)十分鐘,十分鐘之后,應用將會自動轉為掛起狀態(tài)。在十分鐘后臺狀態(tài)下, App 保持了多個接口,包括 Background Audio 后臺音頻、Location Services 定位服務、VoIP 語音通話以及 Newsstand 新聞推送等等,基本上與安卓后臺功能類似。
之前用戶感覺后臺應用保持不變,多半因為應用處于不活躍狀態(tài)與后臺狀態(tài),因此可以迅速恢復如初。也就是說,iPhone 不殺后臺,關鍵不是完全休眠、不占用內存的掛起狀態(tài),而是占用一部分內存的不活躍狀態(tài)與后臺狀態(tài)。
內存調用機制失衡
蘋果手機應用五種存在狀態(tài)決定了 iOS 系統(tǒng)的流暢程度,墓碑機制的存在讓蘋果以小內存抗衡安卓大內存手機。然而,隨著手機軟件內存占用空間越來越大,iPhone 內存調用機制逐漸失衡。
在正常情況下,iOS 將應用內存分為活躍內存與非活躍內存,那些處于不活躍狀態(tài)與后臺狀態(tài)下的應用,所占用的內存處理器并沒有讀取它們,但它們依然被放在內存中處于待命狀態(tài)。如此一來,才會有迅速恢復如初的表現(xiàn)。
然而在非常情況下,比如當前運行軟件需要更多活躍內存時,系統(tǒng)就會選擇性釋放掉不活躍狀態(tài)軟件與后臺軟件所占用的非活躍內存,讓他們直接進入掛起模式??障聛淼膬却孓D為活躍內存,從而讓活躍應用擁有更好的體驗。
簡而言之,iOS 系統(tǒng)充分利用所有內存空間,如果有多余內存就分配給處于不活躍狀態(tài)與后臺狀態(tài)下的應用,讓他們隨時待命。可當前臺活躍應用占用空間過大,靈活的內存分配模式就會失衡。
在日常使用中,很多用戶發(fā)現(xiàn),一旦打開相機應用,殺后臺現(xiàn)象就會變得異常嚴重。其實,原因正是因為相機應用需要調用非常大的活躍內存,大量擠占非活躍內存空間,那些不活躍應用與后臺應用都會變成休眠掛起狀態(tài)。等到用戶拍完照片之后,切回后臺應用,自然發(fā)現(xiàn)需要重新加載。
另一方面,使用較大內存的 iPhone 手機,很少會出現(xiàn)殺后臺問題。比如 iPhone 12 Pro Max 與 iPhone 13 Pro Max,擁有 6G 運行內存,雖然比不上動輒 8G、12G 的安卓手機,可在蘋果手機中,這樣的配置已經(jīng)屬于頂級。擁有更大的內存,讓 iPhone 12 Pro Max 與 iPhone 13 Pro Max 在內存調用時擁有更大空間,可以合理分配活躍內存與非活躍內存。
世界上并不存在完美的墓碑機制,iPhone 手機“不殺后臺”,是因為其系統(tǒng)會合理分配應用狀態(tài),五個級別分別給予不同的內存占用待遇。然而,這一切都無法逃脫物理限制,也就是 iPhone 手機自身的運行內存大小。
如何減少“殺后臺”現(xiàn)象
世界在不斷變化,軟件越來越大,即使強如蘋果,也難以應付“殺后臺”問題。特別是 iPhone 手機使用壽命長,很多 iPhone 機主還在使用 iPhone8 甚至 iPhone7 手機。老舊的手機意味著運行內存小,一個 2G 運存的 iPhone 手機無論如何也避免不了“殺后臺”問題。因此,在能力范圍內,小伙伴們最好更換大運存 iPhone 手機,以此從根本上避免“殺后臺”現(xiàn)象。
當然,iPhone 大運存手機基本都是頂級配置,售價動輒在一萬元以上,并不是物美價廉的選擇。對于不愿意換手機的小伙伴,或許可以從細節(jié)入手,減少殺后臺現(xiàn)象發(fā)生。
首先,需要注意的是不要頻繁調用相機應用,因為相機需要占用很多內存,這一點難以避免。在玩游戲、寫稿、看視頻過程中,不要隨意打開相機應用,免得后臺進程被關閉。
其次,在設置中找到“后臺應用刷新”,為經(jīng)常使用的應用開啟該功能,其他應用一律關閉。這樣做的好處在于保持常用應用后臺使用。
前面小黑提到,iOS 系統(tǒng)為應用設置了五種狀態(tài),而后臺應用刷新可以讓應用保持非活躍狀態(tài),從而保持較高的權限等級。系統(tǒng)在清理后臺應用時,優(yōu)先清理沒有后臺刷新的應用,其次才會選擇后臺刷新應用。
如此一來,以犧牲其他應用為基礎,保證常用應用的使用。當然,這招治標不治本,小伙伴們可以試一下,并不能百分百奏效,具體效果還得看用戶打開的應用數(shù)量與活躍應用占據(jù)內存空間。
在智能手機領域,iOS 系統(tǒng)可謂是王者級別。可再好的系統(tǒng)也無法突破物理極限,應用越來越大,內存占用越來越多,iOS 系統(tǒng)即使再智能也無法合理分配內存空間。俗話說,巧婦難為無米之炊,內存空間小,強如 iOS 系統(tǒng)也無能為力。與其期望 iOS 系統(tǒng)化腐朽為神奇,還不如指望庫克幡然醒悟,大幅度提高 iPhone 手機運存大小。