1. 程式人生 > >Android9Android8中服務Service的限制與解決方案

Android9Android8中服務Service的限制與解決方案

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

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

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

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

後臺執行的相關行為變更

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

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

使用案例及解決方案

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

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

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

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

總結:

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

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