首頁>資訊 >
劃掉多任務(wù)卡片意味著什么?Android 13 前臺(tái)服務(wù)管理器詳解 2022-04-18 13:33:20  來源:36氪

每一次 Android 大版本更新都會(huì)帶來不少底層機(jī)制的更新,其中最為重要、也是用戶最為關(guān)注的部分,除了界面設(shè)計(jì)應(yīng)該就是「性能與續(xù)航」了。

具體到今年剛剛發(fā)布的 Android 13 開發(fā)者預(yù)覽版,新增的「前臺(tái)服務(wù)管理器」尤為令人矚目。

▍任務(wù)、活動(dòng)與服務(wù)

在 Android 系統(tǒng)上,前后臺(tái)的區(qū)分其實(shí)相當(dāng)符合直覺:用戶看不到的就是后臺(tái),其余看得到的就是前臺(tái)。但對我們這些日常操作主要是「打開應(yīng)用、切換多任務(wù)、劃走應(yīng)用卡片」的用戶來說,「服務(wù)」這個(gè)概念就有點(diǎn)不好理解了。

讓我們把應(yīng)用拆開——大部分時(shí)候,和我們產(chǎn)生交互的其實(shí)都只是應(yīng)用中的一部分,這些不同的交互界面我們稱之為「活動(dòng)窗口」;在活動(dòng)窗口之外,應(yīng)用還可以自己獨(dú)立運(yùn)行一項(xiàng)「服務(wù)」,根據(jù) Google 的官方文檔介紹,服務(wù)是一種可在后臺(tái)執(zhí)行長時(shí)間運(yùn)行操作,而不提供界面的應(yīng)用組件。

典型的前臺(tái)服務(wù),包括音樂播放、健身記錄、位置共享、語音或視頻通話等。對于前臺(tái)服務(wù),系統(tǒng)會(huì)盡可能地將它們通過通知系統(tǒng)暴露給用戶。

以照片備份上傳為例,一旦開始備份,OneDrive 便會(huì)彈出一條通知,告知用戶照片備份上傳的具體進(jìn)度,這就是一個(gè)典型前臺(tái)服務(wù)通知。這個(gè)時(shí)候如果我們在多任務(wù)界面將 OneDrive 的活動(dòng)窗口劃去,那么這條通知依然存在、備份也會(huì)進(jìn)行下去。當(dāng)備份完成的那一刻,這個(gè)服務(wù)也就走到了它的時(shí)間終點(diǎn),通知也會(huì)自動(dòng)消除。

所以如果日后打開應(yīng)用時(shí)冷不丁冒出一條「正在同步……」的通知,或是拍完照片后彈出一條「正在優(yōu)化照片」的通知,不用感到意外,這說明系統(tǒng)和應(yīng)用的協(xié)作一切正常。

至于后臺(tái)服務(wù)……用戶甚至都不會(huì)感知到自己的手機(jī)跑了哪些后臺(tái)服務(wù),且 Google 傾向于讓應(yīng)用把長期的后臺(tái)任務(wù)交給系統(tǒng)來執(zhí)行,就像在 iOS 上那樣,就需要另開一篇文章聊這事兒了。

前臺(tái)服務(wù)其實(shí)相當(dāng)常見

▍為什么要限制前臺(tái)服務(wù)

通過通知系統(tǒng)來告知用戶,讓應(yīng)用得以獲取用戶的注意焦點(diǎn)來提升運(yùn)行優(yōu)先級(jí),并最終得以完成任務(wù)。在我看來這是很聰明的做法,如今這樣的機(jī)制也已經(jīng)成為應(yīng)用確保任務(wù)完成的重要手段。

不過從上面的介紹中也不難看出,前臺(tái)服務(wù)主要有兩大特點(diǎn):

即使用戶停止與應(yīng)用的交互,仍能繼續(xù)運(yùn)行

執(zhí)行過程中必須顯示通知

所以將二者結(jié)合起來可以得出的另一種事實(shí)卻是,只要應(yīng)用保證通知正常顯示,它的前臺(tái)服務(wù)就能持續(xù)保持運(yùn)行。

因此同樣的機(jī)制如果被濫用,也是有可能造成大量系統(tǒng)資源浪費(fèi)的。在現(xiàn)實(shí)世界中,各類魔改 UI 幫助用戶「收納」通知不說,應(yīng)用本身可能也會(huì)彈出具有迷惑性的通知(比如偽裝成天氣數(shù)據(jù))來保證自己的服務(wù)持續(xù)存活。更不用提大部分用戶對「應(yīng)用掛個(gè)通知就能持續(xù)運(yùn)行」這件事情毫無概念了。

針對這類情況,必要的檢測和停用手段是必須的。Android 13 這次引入的前臺(tái)服務(wù)管理器終于補(bǔ)上了這一環(huán)。

防范管控的第一步,自然是先將所有前臺(tái)服務(wù)的應(yīng)用羅列出來。Android 13 的快速開關(guān)面板在重新布局的同時(shí),底部也多出了一欄「前臺(tái)服務(wù)管理器」,點(diǎn)擊展開后即可看到當(dāng)前正在活躍的應(yīng)用,點(diǎn)擊對應(yīng)的「停止」按鈕就能一鍵讓應(yīng)用停止運(yùn)行,可謂是相當(dāng)「快準(zhǔn)狠」的管理方式。

其次 Android 系統(tǒng)也會(huì)幫助用戶對前臺(tái)服務(wù)進(jìn)行監(jiān)督,具體的機(jī)制是,在以 24 小時(shí)為單位的時(shí)間長度內(nèi),如果某應(yīng)用的前臺(tái)服務(wù)運(yùn)行超過 20 小時(shí),系統(tǒng)就會(huì)發(fā)送通知告訴「XX 已經(jīng)長時(shí)間后臺(tái)運(yùn)行,點(diǎn)擊查看詳情」。這時(shí)點(diǎn)擊通知也會(huì)跳轉(zhuǎn)到上述前臺(tái)服務(wù)任務(wù)管理器當(dāng)中。

根據(jù) Android 13 現(xiàn)階段的設(shè)計(jì),針對同一應(yīng)用這樣的警告通知不會(huì)在 30 天內(nèi)重復(fù)出現(xiàn)。另外也不是所有應(yīng)用都會(huì)出現(xiàn)在前臺(tái)服務(wù)管理器中,系統(tǒng)級(jí)應(yīng)用、緊急安全相關(guān)應(yīng)用不會(huì)出現(xiàn)在這個(gè)列表中;部分應(yīng)用會(huì)出現(xiàn)在這個(gè)列表中但沒有「停止」按鈕,比如激活設(shè)備所有方的應(yīng)用、撥號(hào)應(yīng)用等。

▍與「劃卡強(qiáng)殺」的區(qū)別

在關(guān)于前臺(tái)服務(wù)管理器的相關(guān)文檔中,我們也得以第一次看到現(xiàn)代 Android 對「多任務(wù)界面上劃應(yīng)用卡片」這個(gè)行為的定義,以及它和前臺(tái)服務(wù)管理器的實(shí)際區(qū)別。

早年黑域、綠色守護(hù)和部分廠商的「劃卡強(qiáng)殺」其實(shí)更接近最右側(cè)的 Force stop,也就是強(qiáng)行停止?,F(xiàn)在進(jìn)入到應(yīng)用管理的詳情頁也依舊能夠看到這個(gè)按鈕,被強(qiáng)行停止的應(yīng)用會(huì)停止一切活動(dòng),一般來說不能再自行啟動(dòng),只能用戶手動(dòng)或其余應(yīng)用拉起才能恢復(fù)運(yùn)行。

從這張表也可以看出,多任務(wù)界面真真切切變成了「應(yīng)用運(yùn)行歷史記錄」,而非代表應(yīng)用的實(shí)際運(yùn)行狀態(tài)。劃走卡片只是取消了歷史記錄以及清走「活動(dòng)窗口」,應(yīng)用并不會(huì)立刻從 RAM 離開,理論上來說可以繼續(xù)保留通知、播放媒體。

前臺(tái)服務(wù)管理器的停止按鈕除了會(huì)暫停前臺(tái)服務(wù),也會(huì)將應(yīng)用從 RAM 中驅(qū)離。需要注意的是,此時(shí)應(yīng)用只是停止了運(yùn)行,并不會(huì)從多任務(wù)窗口中移除,這一考慮或許是為了方便用戶快速恢復(fù)任務(wù),同時(shí)減少系統(tǒng)資源消耗。

▍結(jié)語

閱讀近兩個(gè)版本的 Android 開發(fā)指南文檔,給我最大的感受就是 Google 試圖讓系統(tǒng)機(jī)制來接管應(yīng)用的活動(dòng)、服務(wù)進(jìn)程等,而不建議開發(fā)者自己處理。由系統(tǒng)接管具體行為的做法不僅可以減少應(yīng)用對系統(tǒng)資源、權(quán)限的濫用,同時(shí)也能有效保護(hù)用戶隱私,這一點(diǎn)隔壁陣營應(yīng)該早有實(shí)踐。

只是現(xiàn)階段的文檔口徑都只是「建議」,希望 Google 未來可以一步步落實(shí),讓 Android 系統(tǒng)真正轉(zhuǎn)變?yōu)椤溉藱C(jī)交互」的操作系統(tǒng)。

關(guān)鍵詞: 前臺(tái)服務(wù)

相關(guān)閱讀:
熱點(diǎn)
圖片 圖片