一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

為什么 12G 內(nèi)存的 Android 手機,依舊會被殺后臺

 alayavijnana 2019-10-08
不知不覺間 Android 陷入了一個關(guān)于「后臺」的怪圈:一邊各大廠商陸續(xù)推出了 12G RAM 的手機,另一邊你剛剛放到后臺的下載任務沒有如預期那樣后臺掛機下載,打開微信發(fā)現(xiàn)還得陪啟動畫面的孤獨小人共賞藍色星球,按照教程辛辛苦苦做了半個小時的 Tasker 規(guī)則、卻沒有按照計劃自動執(zhí)行……
于是一個耳熟能詳?shù)木渥娱_始在我們腦海中成型——我的后臺又被「殺」了。

應用開發(fā)者的「控訴」

如果你第二天早上醒來發(fā)現(xiàn)睡眠追蹤應用里的記錄數(shù)據(jù)「一馬平川」,并不是因為你「睡得死」,而是睡眠追蹤應用根本就沒有正常工作。
遇到上述問題的人不止你一個,很多人選擇向這些應用的開發(fā)者反饋問題,殊不知問題其實不在應用本身。
Android 平臺著名睡眠追蹤應用 Sleep as Android 的開發(fā)團隊 Urbandroid Team 不堪其擾,索性上線了一個名為「別『殺』我應用」的網(wǎng)站,矛頭直指手機廠商糟糕的后臺管理機制。
Don't kill my app! 網(wǎng)站對 OEM 系統(tǒng)的評分
以三星為例,Urbandroid Team 稱,三星的部分機型在升級到基于 Android 9 的 One UI 后「殺后臺」現(xiàn)象變得尤為嚴重,自適應電池(Adaptive Battery)機制相比原生 Android 變得尤為激進,3 天內(nèi)沒有啟動過的應用甚至無法從后臺再次啟動。最為糟糕的情況是,如果你安裝了一個可以自動跳過周末的第三方鬧鐘,那這個鬧鐘應用很有可能不會像系統(tǒng)鬧鐘那樣在下周一早上準時響起……
正如「別『殺』我應用」網(wǎng)站上控訴的那樣,擁有類似機制的還包括華為、一加、小米、華碩等等手機廠商的定制版 Android 系統(tǒng),它們管理后臺的方式大同小異,但都秉承著 iOS 上那一套「劃掉就殺掉」的原則——當我們把某款應用的任務卡片從多任務界面劃去,它們也就徹底從手機后臺中抹除掉了。
這里你可能會問很多問題:
  • Android 運行內(nèi)存越來越充裕,為什么會有如此嚴重的「殺后臺」現(xiàn)象?
  • 原生 Android 也采用了一套類似的卡片多任務交互方式,有什么區(qū)別?
  • Android 究竟需不需要借助「一鍵清理」這樣的方式來釋放運行內(nèi)存?
我們得從一些基礎(chǔ)的原理說起。

Android 的內(nèi)存回收機制

官方文檔中,Google 將「不受應用自身直接控制的應用進程生命周期」描述為 Android 最為基礎(chǔ)也最為獨特的核心特性,這里我們不妨將「應用進程生命周期」暫時理解為文章開頭和第一部分所說的「后臺」或「后臺進程(process)」。
所以 Android 應用的后臺進程去留本應是由 Android 系統(tǒng)來決定的。
當可用運行內(nèi)存空間不足時,Android 系統(tǒng)會自行決定對特定應用后臺進程占用的空間進行回收釋放,這個過程中 Android 揮舞著的那把大刀,叫做 LMK(Low Memory Killer)。那 LMK 又是如何判斷哪些應用可以被「殺」掉、哪些應用又該暫時放過的呢?
每個應用都有各種各樣的組成部分,其中特定組件的運行狀態(tài)共同組成了一套供 LMK 進行內(nèi)存回收的「優(yōu)先級」參考,包括:前臺進程、可見進程、服務進程和緩存進程。
一款應用通常會包含的進程類型
前臺進程、可見進程和服務進程往往與我們正在手機上執(zhí)行的操作直接或間接相關(guān),比如正在前臺供我們交互和操作的活動窗口(Activity)、正在通過廣播接收器(BroadcastReceiver)等待觸發(fā)的 Tasker 規(guī)則、正在后臺通過 Wi-Fi 網(wǎng)絡(luò)自動上傳備份照片的 Google Photos 以及前面提到的有待觸發(fā)的鬧鐘等等。這些進程優(yōu)先級從高到低依次遞減,LMK 一般不會觸及。
緩存進程則是那些暫時放在運行內(nèi)存中的部分,也是和本文探討話題主要相關(guān)的重點
在一個正常運行的(Android)操作系統(tǒng)中,緩存進程應是內(nèi)存管理機制唯一需要交互的部分:一個運行良好的 Android 系統(tǒng)通常會在運行內(nèi)存中暫存多個緩存進程以隨時調(diào)用,提高應用間的切換效率,同時對那些較為老舊的不活躍進程進行有計劃的回收。
只有在極端情況下,比如 Android 系統(tǒng)在回收掉所有緩存進程后發(fā)現(xiàn)空閑內(nèi)存依然不夠用(比如在低內(nèi)存的「老爺機」上運行《崩壞 3》),這時 LMK 才會根據(jù)優(yōu)先級繼續(xù)對服務進程、可見進程和前臺進程采取回收策略。而當這些我們在正常使用中能夠直觀感受到的進程都不得不被被回收時,文章開頭提到的微信重載、音樂中斷、下載消失等等現(xiàn)象也就出現(xiàn)了。

誰動了你的后臺

在可用內(nèi)存充裕的情況下遭遇「殺后臺」現(xiàn)象,一方面可能是 LMK 這把「大刀」出了問題(常見于 Android 9 時期的 Pixel 3 用戶),另一方面則有可能是其它規(guī)則額外干預了 Android 系統(tǒng)正常的內(nèi)存回收機制。
這里提到的「其它規(guī)則」主要有兩種形式,一種類似部分華為設(shè)備上預裝的「省電精靈」,它會將所有沒有加入后臺白名單中的應用后臺統(tǒng)統(tǒng)清除,另一種則依托于 Google 推出的后臺檢查后臺限制自適應電池等功能進行「魔改」,讓這些功能的實際效果遠超預期,甚至達到意料之外的負面效果。
根據(jù) Don't kill my app! 的統(tǒng)計,第二種后臺干預機制在三星、一加和早期的諾基亞機型中常見,這里廠商們通常會用到一種類似「白名單」的方法來進行過濾。
以三星手機基于 Android 9 的 One UI 為例,除了微信、QQ 等國內(nèi)常見應用,One UI 默認會為所有第三方應用關(guān)閉「允許后臺活動」這一選項,同時開啟「優(yōu)化電池使用量」這一功能。
One UI 的后臺管理
部分搭載氫 OS 的一加機型則將上面提到的應用進程進行拆分,除了基于原生 Android 的后臺限制、電池優(yōu)化,還有一套名為「自啟動管理」的設(shè)置來對應用的自啟動進行管理以及一套名為「深度優(yōu)化」的電池優(yōu)化機制,后者會造成很多智能手表、手環(huán)設(shè)備在一段時間后丟失與手機的藍牙連接,最終導致睡眠追蹤、運動記錄等等功能的失效。
氫 OS 的自啟動管理
問題在于上述功能埋藏較深,一般用戶在安裝應用后往往不會第一時間前往設(shè)置,一加的氫 OS 更是以系統(tǒng)更新之后自動重置部分用戶設(shè)置聞名,那些需要在后臺正常工作的應用,因此也被都被直接扔進了原生 Android 中用來限制「毒瘤」應用的「黑箱」里。
換句話說,國內(nèi)大部分定制 ROM 在后臺管理這件事情上都選擇采用一種「寧肯錯殺一千不肯放過一個」的做法。

多任務管理還是后臺管理?

從某種程度上來說,國產(chǎn)手機廠商在 Android 后臺管理上的做法雖然偏激,但它們都是國內(nèi)特殊生態(tài)下的產(chǎn)物 。
一方面,盡管 Google 為 Android 設(shè)想了一套非常理想化的應用運行與后臺管理機制,但大多數(shù)于原生 Android 中行之有效的后臺管理機制在國內(nèi)似乎都會變成「雞肋」。
如果 Google 有 100 種提升 Android 應用運行效率,保證后臺綠色、純凈的方法,國內(nèi)毒瘤應用開發(fā)商就有 101 種繞過這些限制的方法。
借助共用的第三方推送服務實現(xiàn)鏈式喚醒、借助透明的懸浮窗保證后臺存活、通過不斷獲取定位的方式來避免進程被系統(tǒng)回收……不管是出于實現(xiàn)消息推送這樣單純的目的還是為了不斷喚醒用戶設(shè)備以實現(xiàn) KPI 目標這種下作的行為,在國內(nèi) Android 生態(tài)中均有出現(xiàn)。
綠色守護專門針對鏈式喚醒推出的喚醒追蹤功能
雖然國內(nèi)外的具體環(huán)境有所不同,但這類設(shè)計不規(guī)范的 Android 應用帶來的問題卻是一樣的,這類應用放在后臺不僅不會為我們帶來便利,反而還會因為頻繁喚醒設(shè)備帶來不小的耗電問題。待機續(xù)航問題作為懸在國產(chǎn) Android 機頭頂?shù)膸装牙麆χ?,手機廠商不得不各自從系統(tǒng)層面推出自家的應對機制——這就有了上面提到的各種偏激式的后臺管理方法。
另一方面,這里還涉及到一個非常重要的概念區(qū)分多任務管理和后臺管理究竟是不是一回事?
國內(nèi) Android 生態(tài)由于早期受 iOS 影響較深,無論是開發(fā)商還是用戶都更傾向于把「將應用卡片從多任務列表里劃掉」的行為理解為清除對應用的后臺進程。在上面提到的特殊生態(tài)環(huán)境的影響之下,這里被清除的后臺進程往往又包括那些用于保證應用后臺運行的可見進程、服務進程乃至前臺進程在內(nèi)。
iOS 的任務管理方式 | 圖:Javi Pérez
在酷安應用市場,甚至還有得以在原生 Android 上實現(xiàn)類似「劃掉卡片即停止運行」效果的應用,iOS 的后臺管理理念在國內(nèi)有多么深入人心可見一斑。
但這種后臺管理理念卻與 Google 對 Android 的多任務管理設(shè)計方式相悖。Google 一直以來都將 Android 手機上呼出任務卡片的那個界面叫做 Recents,最近幾個版本的 Android 系統(tǒng)更是將其本地化為「概覽」。結(jié)合 Google 在 Android 9 和 Android 10 手勢交互上的變革,注重多任務管理而非后臺管理的意圖也越發(fā)明顯。
當最近運行的應用以一張張卡片的形式呈現(xiàn)在我們面前時,Google 想要呈現(xiàn)的是一個能夠讓我們在不同任務間快速切換的多任務交互,而在理想狀態(tài)下,后臺管理則是交由系統(tǒng)處理、完全不應被用戶感知的。
至于如何理性看待 Android 平臺的后臺管理,這里我們不妨借用綠色守護開發(fā)者 @OasisFeng 在「Android 多任務界面的劃除交互」這個話題上的答疑來回答這個問題:
Android 從 8.0 開始大幅度調(diào)整了應用的后臺控制策略……原則上,只要適配了 Android 8+ 的應用,就不能再持續(xù)在后臺占據(jù)內(nèi)存……至于耗電,這是一個需要平衡的取舍,你如果的確需要某個應用的后臺機制,那就得讓它略微耗一點電(不能既要馬兒跑得快,又讓馬兒不吃草吧)。如果你壓根不需要它的后臺機制,或者它的后臺耗電太過分了,那么你可以在應用設(shè)置中限制應用的后臺能力(非原生系統(tǒng)可能不一定有這個選項)。總之,你并不需要「殺應用」,也沒必要為這些破事兒操碎心。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美日韩国产另类一区二区| 日韩女优视频国产一区| 精品少妇一区二区视频| 黄色污污在线免费观看| 蜜桃传媒在线正在播放| 国产爆操白丝美女在线观看| 欧美国产日本免费不卡| 国产免费自拍黄片免费看| 欧美尤物在线视频91| 在线免费不卡亚洲国产| 色婷婷视频在线精品免费观看 | 欧美夫妻性生活一区二区| 久久天堂夜夜一本婷婷| 色播五月激情五月婷婷| 欧美午夜国产在线观看| 国产人妻精品区一区二区三区| 加勒比系列一区二区在线观看 | 樱井知香黑人一区二区| 亚洲妇女黄色三级视频| 国产又色又粗又黄又爽| 欧美国产日韩变态另类在线看| 伊人久久青草地综合婷婷| 国产中文另类天堂二区| 国产精品免费视频久久| 熟妇久久人妻中文字幕| 情一色一区二区三区四| 天海翼高清二区三区在线| 色婷婷中文字幕在线视频| 精品久久少妇激情视频| 老鸭窝精彩从这里蔓延| 精品国产av一区二区三区不卡蜜| 丰满少妇被猛烈撞击在线视频| 无套内射美女视频免费在线观看| 欧美色欧美亚洲日在线| 欧美黑人精品一区二区在线| 国产熟女一区二区不卡| 国产精品内射婷婷一级二级| 久久成人国产欧美精品一区二区| 日本丁香婷婷欧美激情| 亚洲欧美日产综合在线网| 午夜精品一区二区三区国产|