不知道你們有沒(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)。