文|三易生活
如今Android手機似乎正在陷入一個怪圈,盡管內(nèi)存變得越來越大,使得12GB內(nèi)存逐漸普及、18GB內(nèi)存也已出現(xiàn),甚至于出現(xiàn)了虛擬內(nèi)存技術(shù),然而各大手機廠商的系統(tǒng)則在以更強的力度“殺后臺”。為此,在收到了越來越多開發(fā)者的投訴后,此前在2021年6月谷歌發(fā)布了相關(guān)問卷,調(diào)查Android手機的“殺后臺”問題。
在一年后舉行的2022 I/O開發(fā)者大會上,谷歌方面再度表示正在努力從多個角度嘗試解決“殺后臺”的問題,并透露Android 13的AOSP源碼中添加了對MGLRU(多頁面回收策略)的支持,而借助MGLRU,在75%內(nèi)存占用時減少了85%的后臺誤殺情況。
早在2018年時,谷歌方面就收到了開發(fā)者關(guān)于OEM廠商隨意殺后臺的投訴,當(dāng)時在AOSP上就已有開發(fā)者提交了OEM廠商濫用Android核心權(quán)限、施行嚴(yán)苛后臺管控機制的文檔。到了Android 11,谷歌在與海外網(wǎng)友交流時也曾強調(diào),會遏制手機廠商隨意殺后臺的行為。
曾幾何時,“殺后臺”對于Android用戶來說是一個非常正面的詞匯,有的Android用戶會選擇用ROOT后安裝綠色守護等應(yīng)用的方式,來實現(xiàn)更好的后臺管理,而具備自動清理后臺應(yīng)用的功能也更是成為當(dāng)時Android手機的標(biāo)配。那么為什么遏制“殺后臺”會在Android 13中,成為谷歌方面宣稱的新功能呢?
其實,這是因為矯枉過正。在SoC功耗水平大幅度增長、5G基帶成為耗電大戶的情況下,智能手機機身尺寸增長有極限、且消費者更加青睞輕薄的設(shè)計,都造成了手機廠商對于續(xù)航的極度關(guān)注,而強制關(guān)閉駐留在后臺的應(yīng)用,來節(jié)約系統(tǒng)資源就成為了手機廠商提升性能與續(xù)航的法寶。
事實上,手機廠商也很無奈,如果允許應(yīng)用長時間駐留后臺,就意味著功耗與性能開銷變大,此時用戶感知的結(jié)果,就是續(xù)航不夠,總是需要頻繁地充電、而且還可能會卡頓。
一旦手機給用戶帶來這種負(fù)反饋,也意味著產(chǎn)品口碑的下降,這在當(dāng)下這個市場競爭已經(jīng)極為充分的情況下無疑是不可接受的。所以不僅僅是國內(nèi)手機廠商,就連海外廠商也在“殺后臺”這件事上一個賽一個嚴(yán)苛,甚至到了去年6月,有用戶發(fā)現(xiàn)某些OEM甚至強制關(guān)閉了無障礙服務(wù)AccessibilityService。
但實事求是的講,這“鍋”手機廠商最多只能占三分之一,另外三分之一則是谷歌在設(shè)計Android時埋下的伏筆。
眾所周知,谷歌為Android設(shè)計的內(nèi)存回收機制,是只有當(dāng)系統(tǒng)回收了所有的緩存后,發(fā)現(xiàn)依然不足以提供足夠的內(nèi)存來維持系統(tǒng)和應(yīng)用的流暢運行后,才會開始根據(jù)打開順序強制關(guān)閉部分應(yīng)用,將其所占用的內(nèi)存回收。與此同時,Android系統(tǒng)采用的后臺機制與iOS的“墓碑機制”不同,iOS是偽多任務(wù)、而Android則是“真后臺”。
Android的這項設(shè)計也就意味著,打開的應(yīng)用越少系統(tǒng)的負(fù)載就越低,用戶的使用就越流暢。而Android與Windows盡管同為多任務(wù)操作系統(tǒng),但手機的屏幕顯然要遠小于PC,這就使得用戶同一時間最多只會使用一兩個應(yīng)用,此時更多的應(yīng)用就必然要被放在后臺。
面對這一現(xiàn)實,手機廠商的解決方案就是將后臺殺干凈,然后用LPDDR5內(nèi)存、UFS 3.1存儲芯片等硬件升級,來降低用戶啟動應(yīng)用的等待時間,達到與應(yīng)用駐留后臺近似的效果。
“殺后臺”策略發(fā)展到現(xiàn)在,就出現(xiàn)了手機廠商遇到將“白名單”之外其他應(yīng)用被移到后臺時干脆就直接將其關(guān)閉,讓系統(tǒng)獲得最好的狀態(tài),這也是當(dāng)初Android手機“游戲模式”的理論基礎(chǔ)。但問題是,手機廠商“殺后臺”的策略盡管把用戶服務(wù)周到了,卻全然不顧開發(fā)者的利益。
開發(fā)者需要應(yīng)用駐留后臺,其實主要是為了“?;睢薄?yīng)用為了接受后臺消息就需要自行駐留進程,以隨時接收消息的推送,不然用戶就會出現(xiàn)總是收不到消息的情況,使得體驗極為糟糕。例如有的應(yīng)用在后臺掛著掛著就沒了,逼得用戶只能一遍又一遍地看APP的啟動頁廣告。久而久之,被迫頻繁看廣告的用戶自然就不干了,所以也就有了工信部因“用戶反映強烈投訴較多”而對開屏廣告進行治理。而損失了部分廣告收入的開發(fā)者自然也會向谷歌方面投訴,要后者管一管手機廠商無腦殺后臺的操作。
當(dāng)然,“殺后臺”之風(fēng)愈演愈烈,最后三分之一的原因其實是出在開發(fā)者自己身上。由于Android生態(tài)的自由開放,在Android 8之前,用戶當(dāng)時頭疼的并不是后臺應(yīng)用被關(guān)閉、而是后臺“殺不盡”,彼時許多應(yīng)用為了保活可謂是各出奇招,選擇用鏈?zhǔn)絾拘?、隨意緩存、強制自啟等方式扎根在后臺,直接導(dǎo)致Android背上了“卡頓”的名聲。
一句話,開發(fā)者和OEM廠商圍繞著“殺后臺”的矛盾,直接原因就是雙方的利益不一致,而且兩者之間很難形成利益共同體,少數(shù)形成利益共同體的應(yīng)用也早就進入了手機廠商的白名單。沒錯,“殺后臺”之所以讓普通用戶感知不明顯,就是因為微信、QQ、微博、抖音、淘寶等日常打開頻率較高的應(yīng)用,幾乎個個都是手機廠商“白名單”的???。
國內(nèi)的Android開發(fā)者長期以來在開發(fā)應(yīng)用時,首先需要思考的問題,就是“我的應(yīng)用能像微信那樣一直在手機運行嗎?為什么微信一直在手機后臺就能收到消息”。畢竟不患寡而患不均,作為普通的Android開發(fā)者自然就會向谷歌方面投訴,不然就是永遠都無法在巨頭環(huán)伺下出頭。
那么問題來了,谷歌在Android 13上推出的MGLRU(Multi-Generational Least Recently Used),真能改變手機廠商這種頻繁“殺后臺”的現(xiàn)狀嗎?從技術(shù)角度來看,谷歌方面是很有信心的。因為MGLRU是傳統(tǒng)內(nèi)存管理算法LRU(緩存淘汰)的升級版,而LRU則是基于這樣的一種假設(shè),即用戶長期不被使用的數(shù)據(jù)在未來被用到的幾率也不大,所以當(dāng)數(shù)據(jù)所占內(nèi)存達到一定閾值時,會移除掉最近最少使用的數(shù)據(jù)。
但LRU算法的邏輯用在智能手機上可能并不適用,畢竟應(yīng)用被用戶掛在后臺時間的早晚與使用頻率并沒有太多關(guān)系。所以MGLRU的策略是將Android后臺應(yīng)用分為幾組,每一組都是由上一組被使用的后臺應(yīng)用組成,通過差分掃描來標(biāo)記時間上存在較長的后臺應(yīng)用,并最終計算出可以安全關(guān)閉的應(yīng)用。根據(jù)谷歌方面的說法,MGLRU實現(xiàn)了在75%內(nèi)存占用時減少了85%的后臺誤殺情況。
然而MGLRU能夠起到的效果有多大,會不會改變手機廠商目前殺后臺政策,我們所持有的是相對悲觀的態(tài)度。畢竟Android的真后臺機制就代表著,殺后臺的強度越高手機處于低負(fù)載的時間就會越多,用戶感覺使用流暢的時間就越長。并且更為重要的一點是,應(yīng)用被殺后臺并不會影響到手機廠商的利益,反正有白名單機制存在,真正的利益相關(guān)方早就被保護起來了。
因此在我們看來,或許只要手機廠商不再搞出強制關(guān)閉AccessibilityService服務(wù)這種違反相關(guān)條款的操作,谷歌其實是管不了手機廠商第三方ROM是不是會應(yīng)用MGLRU這件事的。