iOS后臺(tái)機(jī)制

不知道你們有沒(méi)有想過(guò),作為一款成熟的手機(jī)操作系統(tǒng),Android為什么會(huì)越用越卡?而iOS卻絲毫沒(méi)有這樣的問(wèn)題。通常一部旗艦級(jí)的Android手機(jī)內(nèi)存都在2G以上, 甚至達(dá)到4G。 而iPhone6之前的內(nèi)存只有1G。難道我們想到的東西Google工程師沒(méi)有想到? (當(dāng)然我們這里不考慮WP系統(tǒng), 畢竟沒(méi)有用過(guò), 但以微軟的尿性, 他的后臺(tái)一定更吊)

Android是真后臺(tái), iOS是 '偽后臺(tái)' ?

  • 在Android系統(tǒng)中, 它允許APP留存在后臺(tái), 依靠著Service服務(wù)組件繼續(xù)運(yùn)行,搶占前臺(tái)CPU資源, 這是Android手機(jī)使用時(shí)間長(zhǎng)后卡頓的主要原因.
  • 而在iOS系統(tǒng)中, 應(yīng)用程序后臺(tái)后不會(huì)下載, 多開(kāi)網(wǎng)頁(yè)后切換需要重新加載, 似乎確實(shí)是'偽后臺(tái)'.

iOS 3

從 iOS 3開(kāi)始, 蘋(píng)果為iPhone引入了 push notification, 不啟動(dòng)應(yīng)用也能接收到推送消息, 就是我們所說(shuō)的 APNS . 一直到今天 , 幾乎所有的應(yīng)用都離不開(kāi)APNS.
而在Android中, 如果你殺掉一個(gè)應(yīng)用, 那么你很可能收不到消息。

iOS 4

隨著 iOS 4 的發(fā)布, iOS也開(kāi)始有了多任務(wù)功能, 當(dāng)你點(diǎn)擊 Home 鍵時(shí),當(dāng)前程序轉(zhuǎn)入后臺(tái)(在 iOS 4 之前,按下 Home 鍵 會(huì)直接殺掉應(yīng)用), 后臺(tái)程序會(huì)以墓碑的形式保存在內(nèi)存中,用戶可以快速恢復(fù)。但是蘋(píng)果的后臺(tái)機(jī)制非常嚴(yán)格, 只有像音頻播放、定位、newsstand、VoIP等才會(huì)在后臺(tái)真正運(yùn)行。

一般情況下,應(yīng)用最多只能在后臺(tái)運(yùn)行5秒, 之后就會(huì)掛機(jī),如果配置了后臺(tái)運(yùn)行(如下載), 應(yīng)用會(huì)在大概9.9分鐘時(shí)進(jìn)程停滯, 程序被掛起。 一旦系統(tǒng)需要內(nèi)存, 最早的后臺(tái)進(jìn)程就會(huì)被殺掉。

蘋(píng)果這樣的設(shè)計(jì)保證了手機(jī)的流暢性以及續(xù)航能力,這就是iOS不會(huì)卡頓的原因。在我們提交應(yīng)用到AppStore審核時(shí), 他會(huì)嚴(yán)格審查是否有越權(quán)犯規(guī)的行為。 所以iOS的后臺(tái)其實(shí)并不是真正意義上的后臺(tái)。

iOS 7

iOS 7 是iOS系統(tǒng)中里程碑的一次更新, 大多數(shù)人只看到扁平化的UI。 但其實(shí)在后臺(tái)管理上 iOS做出了翻天覆地的改變。有的人可能覺(jué)得沒(méi)這么夸張, 畢竟我們并不能明顯感受到他的變化, 下面會(huì)詳細(xì)介紹。

從 iOS 7 開(kāi)始, 一旦手機(jī)鎖屏, 后臺(tái)應(yīng)用將會(huì)很快被暫停, 之后當(dāng)系統(tǒng)被喚醒時(shí),那些暫停的后臺(tái)應(yīng)用會(huì)一起繼續(xù)運(yùn)行。這樣的好處是系統(tǒng)不回因?yàn)榈谌綉?yīng)用在后臺(tái)運(yùn)行而長(zhǎng)時(shí)間處于喚醒狀態(tài),可以增加電池續(xù)航。

現(xiàn)在的iOS后臺(tái)管理很智能, 他會(huì)記憶你每天什么時(shí)段打開(kāi)什么應(yīng)用, 經(jīng)過(guò)一段時(shí)間后, 他會(huì)在適當(dāng)時(shí)間喚醒相應(yīng)的應(yīng)用, 這一點(diǎn)Android想都不敢想。

iOS 7 新增三種后臺(tái)模式

  • Baxkground Fetch
  • Silent Remote Notifications
  • Background Transfer Servce

Baxkground Fetch 后臺(tái)應(yīng)用刷新

iOS 7 之前的應(yīng)用必須在打開(kāi)時(shí)才能聯(lián)網(wǎng)獲取數(shù)據(jù), 而它可以讓?xiě)?yīng)用在后臺(tái)直接獲取數(shù)據(jù)。

Silent Remote Notifications 靜默推送喚醒

iOS 7 之前當(dāng)收到消息后, 只有打開(kāi)應(yīng)用才能從APNS獲取推送的具體消息, 現(xiàn)在在收到消息后, 會(huì)自動(dòng)喚醒相應(yīng)的APP , 讓該APP在后臺(tái)獲取消息, 再通知用戶。

Background Transfer Servce 后臺(tái)傳輸

以前一旦下載被轉(zhuǎn)移到后臺(tái)最多只能持續(xù)運(yùn)行549秒(9.9分鐘), 現(xiàn)在所有的下載任務(wù)會(huì)交給系統(tǒng)獨(dú)立的進(jìn)程去完成, 不管APP在前臺(tái)、掛起還是被殺掉, 下載都在繼續(xù)進(jìn)行。

蘋(píng)果在iOS 7 開(kāi)始采用了非常復(fù)雜的設(shè)計(jì)邏輯,在兼顧iOS系統(tǒng)安全性、流暢性以及優(yōu)秀的續(xù)航能力上,最大限度地實(shí)現(xiàn)了真正后臺(tái)的功能。完美的避開(kāi)了Android 卡頓的問(wèn)題的同時(shí), 獲得了更好的用戶體驗(yàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評(píng)論 25 708
  • iOS7之前,APP是偽后臺(tái)模式。iOS7后,APP擁有四種真后臺(tái)模式,無(wú)論是哪一種后臺(tái)機(jī)制,均需要利用蘋(píng)果給予的...
    AYuan_閱讀 2,788評(píng)論 0 6
  • 1.iOS其實(shí)是偽后臺(tái) 為什么說(shuō)iOS是偽后臺(tái)?首先需要了解一下iOS中的后臺(tái)進(jìn)程到底是怎么回事。iOS中所謂的“...
    yezhouxiang閱讀 1,975評(píng)論 0 1
  • iOS3-APNS推送(通知中心) 從iOS3開(kāi)始,蘋(píng)果為iPhone引進(jìn)了push notification,不...
    0可口可馨0閱讀 2,791評(píng)論 0 0
  • 生活中我最喜歡的就是“Aha Moment”,中文翻譯為“頓悟”,就是說(shuō)一瞬間你就突然之間明白了此前之前一直想不通...
    森晴小語(yǔ)閱讀 854評(píng)論 0 49

友情鏈接更多精彩內(nèi)容