跟上腳步,進入後臺執行新時代

Android_開發者發表於2018-11-09

作者: Luiz Gustavo Martins, 合作伙伴開發技術推廣工程師,合作伙伴 DevRel 團隊

本文為 Android 電量管理 系列連載的第三篇,希望您能在閱讀過程中收穫裝置續航方面的戰略洞見和實踐指導。

隨著近幾年來 Android 的不斷髮展,Google 逐步加強了對於後臺執行的優化和限制。為了開發出現代化的 Android 應用,開發者需要學習如何通過最新方式來管理後臺任務。

系統如何判定應用處於後臺?

在理解後臺執行這個概念之前,我們先來看看 Android 系統是如何定義前臺應用的。當應用滿足以下任意條件時,系統會判斷應用處於前臺:

如果以上條件均不滿足,應用將被視為處於後臺。

後臺執行的相關行為變更

在後臺執行應用會消耗裝置的有限資源,如記憶體或者電池電量,進而影響使用者的使用體驗,比如說,後臺任務可能會縮短裝置的續航時間,或者在使用者玩遊戲、看視訊或拍照時造成系統卡頓。

為了改善續航表現和使用者體驗,Android 在版本演進的過程中,針對後臺執行進行了不同程度的限制,其中包括:

  • 低耗電模式和應用待機模式: 如果裝置未插接電源,處於空閒狀態一段時間且螢幕關閉,系統會進入低耗電或者待機模式,並對應用行為施加相應限制;
  • 後臺位置限制: 對後臺應用獲取使用者當前位置的頻率進行限制;
  • 後臺服務限制: 限制應用在後臺執行服務,並禁止應用通過隱藏/不可見方式呼叫 CPU 或網路資源;
  • 近期新增特性及優化項: (1) 應用待機群組: 限制非活躍應用對裝置資源的呼叫; (2) 後臺限制: 當系統檢測到應用出現不良行為時,系統會向使用者詢問是否要限制該應用在後臺訪問裝置資源; (3) 省電助手功能優化

使用案例及解決方案

開發者在選擇後臺執行工具前,首先要對應用需求和限制場景有個清晰的瞭解,我們建議您參照以下流程圖,為應用制定最佳的後臺決策:

跟上腳步,進入後臺執行新時代

  • 作為 Android 推薦的後臺管理工具,WorkManger 考慮了系統內的所有後臺執行限制。如果您需要確保推遲的任務一定會被執行,請務必呼叫 WorkManager。該 API 允許您排程任務 (單次執行迴圈執行) ,組合任務和構成任務鏈。您還可以新增任務執行的約束條件,例如:當裝置空閒或充電時才可以觸發,或者當內容提供程式發生變更時才可以執行。

以上傳日誌為例,您需要依次建立以下兩個工作請求,才可以將壓縮後的日誌檔案上傳至伺服器:

  • 第一步:壓縮檔案。在此步驟中,您可以新增約束條件 “當裝置充電時,任務才可以被執行”。
  • 第二步:向伺服器上傳檔案。在建立此請求時,您應該新增 “需要聯網”這一約束條件,指定任務僅在裝置連線到有效網路時才會被觸發。

將任務編入佇列後,WorkManager 會在約束條件滿足的情況下,即當應用可以訪問所需資源時,才會執行這兩個任務。

WorkManger 的另一個優勢在於它可以與 Android 的電量管理特性協同工作。假設某個任務的指定執行時間恰好落在低耗電模式時段內,那麼 WorkManager 便會在維護視窗時段 (如果此時約束條件已滿足,或裝置暫時退出了低耗電模式) ,嘗試執行該任務。

  • 如果任務由外部事件觸發且執行時間較長,例如同步新資料,請先使用 Firebase Cloud Messaging 通知您的應用,然後再呼叫 WorkManager 建立同步資料的工作請求。您可以閱讀《使用 FCM 訊息向使用者傳送通知》,獲取更多詳情。
  • 如果應用需要立刻執行一個由使用者發起的任務,即使使用者退出應用或關閉螢幕 (如音樂/視訊重放或者導航) 也不會影響任務的執行,請您使用前臺服務。(我們將在下一篇連載中深度剖析該使用案例,敬請期待!)
  • 如果您需要在某一特定時間執行一個無法被推遲的任務,且該任務會觸發操作 (action) 並涉及使用者互動,請呼叫 AlarmManager 中的 setExactAndAllowWhileIdle 方法。常見的定時任務包括:
    • 服藥提醒
    • 電視節目開始前,向使用者傳送的提醒通知

在觸發標準鬧鈴後,您會有幾秒鐘的時間完成工作,此時應用可能無法訪問網路 (例如,系統處於低耗電模式,或者應用被歸入某一待機群組)。如果您必須訪問網路,或者任務執行時間較久,請呼叫 WorkManager。每當喚醒鬧鐘被觸發後,裝置就會退出低電量模式並持有一個區域性喚醒鎖,而長時間持有喚醒鎖會嚴重影響裝置的續航時間。建議您通過 Google Play 管理中心提供的 Android Vitals 來監測應用是否存在過度喚醒的問題。

總結:

跟上腳步,進入後臺執行新時代

合理的後臺執行策略可以幫助您開發出卓越的應用,在打造完美使用者體驗的同時,為裝置保駕 “續” 航。如果您想進一步瞭解後臺執行的相關訊息,請訪問 Android 開發者官網

請注意:WorkManager 目前只發布了公共預覽版,您可以繼續使用 JobScheduler 作為替代方案,不過和 WorkManger 相比,JobScheduler 有更多的侷限。 JobScheduler 屬於 Android 框架的一部分,它僅在 API ≥ 21 的系統上可用;而 WorkManager 則支援 API 14 及更高版本。

點選這裡 前往“Android Developers 官方文件”檢視更多資訊

跟上腳步,進入後臺執行新時代

更強續航,盡在 Android 9 Pie!

相關文章