?在手機(jī)圈,有個(gè)怪象, 安卓手機(jī)的后臺(tái)一直比不上iOS。 在使用中, 安卓手機(jī)的后臺(tái)卻頻繁被殺, 而iPhone的表現(xiàn)就好很多, 要知道, 安卓手機(jī)已經(jīng)來到了12G RAM的內(nèi)存, 最新的iPhone 11 Pro Max可是才4G, 簡(jiǎn)直不給安卓手機(jī)面子。 好學(xué)好問的小伙伴可能有點(diǎn)奇怪了, 為什么安卓那么大的內(nèi)存, 后臺(tái)管理上卻還是比不上iOS? 我們來看看安卓的后臺(tái)管理機(jī)制。 在安卓系統(tǒng)里, 有個(gè)叫Low Memory Killer(LMK)的審判員, 當(dāng)手機(jī)內(nèi)存不足時(shí), LMK就會(huì)對(duì)特定的后臺(tái)進(jìn)程進(jìn)行回收釋放內(nèi)存。 慢著,現(xiàn)在的安卓手機(jī), 6G內(nèi)存、8G內(nèi)存都已經(jīng)那么普遍了, 甚至12G的內(nèi)存也很多。 內(nèi)存還會(huì)不足嗎? 這里需要談到進(jìn)程。 進(jìn)程一般分為服務(wù)進(jìn)程、可見進(jìn)程、前臺(tái)進(jìn)程和緩存進(jìn)程。 像服務(wù)進(jìn)程、可見進(jìn)程和前臺(tái)進(jìn)程, 這些后臺(tái)往往與我們正在執(zhí)行的操作相關(guān), 比如后臺(tái)下載、設(shè)置鬧鐘、我們正在使用的應(yīng)用, LMK一般不會(huì)動(dòng)這些進(jìn)程。
緩存進(jìn)程是安卓系統(tǒng)為了提高應(yīng)用間的切換效率, 比如看視頻的時(shí)候或者玩游戲的時(shí)候, 對(duì)象發(fā)個(gè)微信消息,就要立馬切換回微信。 這種情況就會(huì)在運(yùn)行內(nèi)存中暫存多個(gè)緩存進(jìn)程, 以供系統(tǒng)隨時(shí)調(diào)用。 而谷歌作為安卓的爸爸, 也為安卓提供了一套非常理想的后臺(tái)管理機(jī)制, 在手機(jī)內(nèi)存不足時(shí), 會(huì)優(yōu)先釋放緩存進(jìn)程, 不影響用戶正在執(zhí)行的操作。 而這也僅僅是理想, 放在國內(nèi), LMK失效了, 會(huì)對(duì)服務(wù)進(jìn)程、可見進(jìn)程和前臺(tái)進(jìn)程下手, 直觀的感受就是下載中斷, 音樂暫停,應(yīng)用重新加載, 也就是后臺(tái)被殺了。
根本原因還是因?yàn)?strong>缺失了谷歌服務(wù), 在海外, 只要遵從了安卓設(shè)計(jì)規(guī)范的APP, 用戶收到消息的流程是這樣的: APP消息——FCM(谷歌推送服務(wù))——用戶設(shè)備, 在這個(gè)過程中, APP不需要啟動(dòng), 只要通過谷歌服務(wù)器, 就可以將數(shù)據(jù)信息發(fā)送給用戶設(shè)備。
用戶收到消息的流程就會(huì)變成這樣: APP消息——APP自身服務(wù)器推送——用戶設(shè)備。 這個(gè)過程中, 要想接收到消息,APP就必須啟動(dòng), 而且啟動(dòng)就啟動(dòng),通常還會(huì)獲取各種信息, 像是定位、號(hào)碼、通話記錄等等, 造成手機(jī)卡頓耗電,隱私也容易泄露。 手機(jī)廠商肯定不能放任這個(gè)問題不管, 消費(fèi)者可不管你原因, 手機(jī)卡頓和耗電就算你的。 為了解決谷歌服務(wù)缺失這個(gè)問題, 安卓廠商對(duì)安卓系統(tǒng)進(jìn)行了魔改, 根據(jù)谷歌推出的后臺(tái)管理機(jī)制進(jìn)行魔改, 從而控制應(yīng)用自啟動(dòng), 這樣一來, 應(yīng)用亂啟動(dòng)的問題也就解決了。 但一不小心就用力過度, 大部分魔改過的安卓系統(tǒng), 只要應(yīng)用沒有加入系統(tǒng)白名單中, 不管你多大的內(nèi)存, 很大幾率都會(huì)被系統(tǒng)殺掉。 這也是為什么安卓運(yùn)行內(nèi)存越來越大, 但殺后臺(tái)現(xiàn)象還時(shí)有發(fā)生的原因, 這也是廠商無奈, 國內(nèi)安卓APP亂象太嚴(yán)重, 控制力度不嚴(yán)格, 應(yīng)用可能就會(huì)無限自啟, 一不小心還給你個(gè)全家桶。 在iOS 7之前, 蘋果的后臺(tái)管理一直實(shí)行“墓碑機(jī)制”, 在退出應(yīng)用程序時(shí), 系統(tǒng)會(huì)記錄下當(dāng)前應(yīng)用程序的狀態(tài), (就像是把事件記錄在墓碑上一樣) 當(dāng)需要恢復(fù)后臺(tái)時(shí), 應(yīng)用可以回到退出前的狀態(tài)。 這種后臺(tái)管理機(jī)制, 保存的只是應(yīng)用的上下文數(shù)據(jù), 應(yīng)用本身已經(jīng)退出, 應(yīng)用占用內(nèi)存空間十分小, 至于消息推送, iOS中也有類似于谷歌服務(wù)的存在。
再次打開應(yīng)用時(shí)需要加載時(shí)間, 因此iOS引入了后臺(tái)應(yīng)用刷新。
允許APP根據(jù)用戶習(xí)慣, 在一定的場(chǎng)景下被后臺(tái)智能喚醒。 比如習(xí)慣性在早上開啟新聞APP, 那么這段時(shí)間內(nèi), 退出的新聞APP很有可能也不會(huì)被殺掉后臺(tái)。 但是在最新的iOS 13中, 蘋果進(jìn)一步完善了這種后臺(tái)管理機(jī)制, 后臺(tái)管理更加智能, 只會(huì)在需要的時(shí)候喚醒APP。 因此蘋果后臺(tái)管理的秘訣在于, 墓碑機(jī)制 智能后臺(tái)管理 系統(tǒng)級(jí)的消息推送, 一半的內(nèi)存就可以做到比安卓手機(jī)更強(qiáng)大的后臺(tái)管理。
國內(nèi)方面, 成立了安卓統(tǒng)一推送聯(lián)盟, 替代缺失的谷歌服務(wù), 從應(yīng)用自啟上踏出了第一步。
也有所動(dòng)作, 據(jù) The Verge 消息, 針對(duì)iPhone 只需要安卓手機(jī)一半的內(nèi)存空間, 就可以出色地完成各項(xiàng)后臺(tái)任務(wù)的這一情況, 谷歌將在月底推出新的內(nèi)存管理機(jī)制。 雖然具體細(xì)節(jié)官方還沒有公布, 但意識(shí)到與iOS差距的谷歌, 一定會(huì)在內(nèi)存管理上帶來更好的改進(jìn), 一旦谷歌解決了內(nèi)存管理的問題, 全新的安卓也許真的可以到來。 最后...呃…… 好像上個(gè)版本, 谷歌也是這么說的。 (手動(dòng)滑稽) 所以有生之年, 你們說能看到安卓真的看齊iOS嗎? |
|