應用退居後臺,如何在低功耗的狀況下保證任務正常運行?本文華爲軟件功耗專家黃文將分享議題——應用後臺功耗經驗。html
本文將從安卓綠色聯盟功耗標準2.0、谷歌後臺功耗方案、華爲後臺功耗方案以及開發者資源使用建議和檢測工具五大方面進行全面講解。android
《安卓綠色聯盟應用體驗標準2.0---功耗標準》詳細介紹了應用後臺軟資源和硬資源的使用標準,查看詳情請訪問安卓綠色聯盟官網。shell
谷歌從Android M開始着力改善終端的續航表現。Android版本在演進中主要提供以下幾個方案。網絡
1.後臺位置限制:app
對後臺應用獲取用戶當前位置的頻率進行限制。工具
相關連接:https://developer.android.google.cn/about/versions/oreo/background-location-limits測試
2.後臺服務限制:大數據
限制應用在後臺運行服務,並禁止應用經過隱藏/不可見方式調用 CPU 或網絡資源。優化
相關連接:https://developer.android.google.cn/about/versions/oreo/background#servicesui
3.後臺限制:
當系統檢測到應用出現不良行爲時,系統會向用戶詢問是否要限制該應用在後臺訪問設備資源。
相關連接:https://developer.android.google.cn/topic/performance/background-optimization#bg-restrict
4.谷歌後臺功耗方案-Doze(低耗電模式和應用待機模式)
谷歌在Android M版本引入了Doze方案,此方案主要針對後臺應用在沒有活動的狀況下作某些限制。設備未充電且屏幕關閉處於空閒狀態一段時間後,系統會進入低耗電或者應用待機模式,對應用行爲施加相應限制。
相關連接:https://developer.android.google.cn/about/versions/marshmallow/android-6.0-changes#behavior-power
如圖所示,如下是Doze模式各狀態說明:
ACTIVE: 設備活動態
INACTIVE:設備不活躍(滅屏、不運動) 等待進入idle.
IDLE_PENDING: 設備準備進入下一階段
SENSING: 傳感器檢測設備是否運動
LOCATING: 設備位置變化.
IDLE: 設備進入idle,並儘可能長時間保持該狀態
IDLE_MAINTENANCE: 退出idle進入「維護期」
谷歌還引入了Light-Doze(Android N)和Deep-Doze(Android M)的概念,具體內容以下:
5.應用待機羣組
應用待機羣組對應用進行分組管理,不一樣的分組享有不一樣的權限設置,杜絕了對應用一刀切的現象。
相關連接:https://developer.android.google.cn/preview/features/power#buckets
應用待機分組:
1)活躍 (Active): 應用正在被使用
2)工做 (Working set): 應用使用頻率很高
3)經常使用 (Frequent): 應用常常但不是天天被使用
4)極少 (Rare): 應用偶爾被使用
5)從不(Never):安裝後一次都未被使用過的應用
分組策略:
調試:
經過adb命令將應用手動劃分至某一待機羣組。輸入如下命令,更改羣組:
$ adb shell am set-standby-bucket packagename active/working_set/frequent/rare
輸入如下命令,查看應用所處羣組:
$ adb shell am get-standby-bucket [packagename]
爲促進用戶體驗,谷歌對應用在後臺狀態下的建議以下:
1.華爲的功耗方案,主要是在谷歌的基礎上對應用的異常行爲進行監控,經過智電機器人,識別後臺應用的行爲是正常耗電仍是異常耗電。
2.華爲的優化分爲主動優化和異常防禦。
主動優化在谷歌運行方案的基礎上增長了冷凍方案,應用退到後臺後,在沒有用戶可感知狀態和活動下,將應用所佔用的資源包括CPU、軟硬件資源等所有暫停。一旦應用須要運行,資源會啓動恢復流程,這就是主動優化。
華爲的盾防系統會監控全部後臺資源消耗狀況,在用戶未感知的狀況下,一旦資源消耗超過華爲功耗紅線標準,便會發出高耗電提醒,這就是華爲的異常防禦。
具體紅線標準請參考《安卓綠色聯盟應用體驗標準2.0---功耗標準》,標準包括持鎖阻止系統休眠、alarm頻繁喚醒系統、後臺CPU高負載耗電、長時間網絡定位等。
3.華爲低功耗Power kit包括PUSH+NC和Bastet鏈路託管技術。
應用推送遠程通知,可使用華爲PUSH NC。
相關連接:
https://developer.huawei.com/consumer/cn/service/hms/pushservice.html
應用保持長連接,能夠接入華爲鏈路託管技術Bastet.
相關連接:
https://developer.huawei.com/consumer/cn/devservice/doc/30401
1.定時任務
推薦綠色機制:
2.網絡
推薦綠色機制:
3.Wakelock
推薦綠色機制:
1.Battery Historian
相關連接:https://developer.android.google.cn/topic/performance/power/battery-historian
2. AT&T Application Resource Optimizer
擅長於網絡跟蹤
相關連接:
https://developer.att.com/application-resource-optimizer
3. Android vitals
對過分喚醒、wifi掃描、網絡使用、長時間持喚醒鎖、進行監控,並輸出報告
相關連接:https://developer.android.google.cn/topic/performance/vitals/
爲保證應用在低功耗的狀況下可以正常的運行任務,建議使用以下方案:
1.研發階段:
1)推送遠程通知消息,需使用FCM或華爲PUSH NC。
2)保持長連接心跳,需使用華爲Modem鏈路託管技術(華爲Bastet)
3)用戶觸發的後臺業務,需使用前臺服務+常駐通知。
4)非用戶觸發可推遲的任務,需使用JobScheduler/WorkManager。
5)合理使用Alarm,Wakelock,Network,GPS等軟硬資源。
2.測試驗收:
藉助工具,使用battery-historian、 ARO、Android vitals分析運行時和長待機狀況。
3.禁止行爲:
惡意保活,包括無聲播放、一像素界面、低流量下載等。
關注安卓綠色聯盟公號,回覆「2304」獲取PPT