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