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