iPhone|從以不殺后臺進程聞名到屢屢殺后臺,iPhone究竟經歷了什么?

iPhone|從以不殺后臺進程聞名到屢屢殺后臺,iPhone究竟經歷了什么?

文章圖片

iPhone|從以不殺后臺進程聞名到屢屢殺后臺,iPhone究竟經歷了什么?

文章圖片

iPhone|從以不殺后臺進程聞名到屢屢殺后臺,iPhone究竟經歷了什么?




其實 , iPhone 手機原先不殺后臺 , 主要功勞在于墓碑機制 , 所謂墓碑機制 , 也就是當一個程序被系統關閉后 , 系統允許這個程序給自己立一個“墓碑” , 記錄著自己“生前”的模樣 。 等到再次使用時 , 系統會照著它墓碑上的描述 , 從閃存中加載到內存中去 。
【iPhone|從以不殺后臺進程聞名到屢屢殺后臺,iPhone究竟經歷了什么?】


換言之 , 安卓系統是“真后臺” , 后臺 App 會占用大量系統內存 。 iOS 系統是“假后臺” , 前臺獨占內存空間 , 后臺應用會交換到手機的閃存 , 保存“關閉”前的狀態 , 釋放占用的硬件資源 , 切換后臺應用時 , 從閃存直接調用到內存 。 我們手勢上滑呼出的 iPhone 多任務界面 , 其實只是近期使用過的 App 列表與快捷方式 。




按照墓碑機制的原理 , iPhone 似乎可以無限制擴大后臺常駐應用 , 只要保留“假后臺” , 殺后臺問題就不會出現 。 然而 , 真實世界里不會出現如此完美的機制 , 原因在于墓碑機制的缺點 。 墓碑機制并非蘋果獨有 , 微軟曾經的 WP 系統也有墓碑機制 。 在 WP7 系統下 , 微軟禁止任何第三方應用在后臺運行 , 這樣就不耗費運行內存與處理器資源 , 等到切換應用時 , 之前的應用會恢復到關閉之間的狀態 , 也就是墓碑機制 。




然而 , 墓碑機制決定了應用進入休眠狀態 , 無法與外界產生聯系 。 因此 , 蘋果對墓碑機制進行修正 , 在應用完全進入“墓地”之前 , 蘋果還給它多種選擇 。 在 iOS 系統中 , 應用狀態分為五類 , 分別為未運行、不活躍、活躍、后臺與掛起 。




未運行狀態即完全關閉狀態 , 活躍狀態意味著應用正在使用 。 不活躍狀態意味著 App 停止運行 , 但是內存依然占用 , 用于保持當前狀態 。 后臺意味著應用進入后臺狀態 , 一般會持續十分鐘 , 十分鐘之后 , 應用將會自動轉為掛起狀態 。 在十分鐘后臺狀態下 ,  App 保持了多個接口 , 包括 Background Audio 后臺音頻、Location Services 定位服務、VoIP 語音通話以及 Newsstand 新聞推送等等 , 基本上與安卓后臺功能類似 。



之前用戶感覺后臺應用保持不變 , 多半因為應用處于不活躍狀態與后臺狀態 , 因此可以迅速恢復如初 。 也就是說 , iPhone 不殺后臺 , 關鍵不是完全休眠、不占用內存的掛起狀態 , 而是占用一部分內存的不活躍狀態與后臺狀態 。


    相關經驗推薦