(兩百五十五)學習應用待機存儲分區

學習https://developer.android.google.cn/topic/performance/appstandby

 

應用待機存儲分區

Android 9(API 級別 28)引入了新的電池管理功能:應用待機存儲分區應用待機存儲分區有助於系統根據應用的使用時間新近度和使用頻率對應用資源請求確定優先級。 根據應用使用模式,每個應用都會被放置在五個優先級存儲分區之一中。系統會根據應用所在的存儲分區限制每個應用可用的設備資源。

優先級存儲分區

系統會動態地將每個應用分配到優先級存儲分區,並根據需要重新分配應用。系統可能依賴於某個預加載的應用,該應用使用機器學習判斷每個應用將被使用的可能性,並將應用分配到相應的存儲分區。如果設備上沒有該系統應用,則系統會默認根據應用的使用時間新近度對應用進行排序。系統會將更活躍的應用分配到賦予應用更高優先級的存儲分區,爲應用提供更多系統資源。具體而言,存儲分區決定了應用的作業運行頻率,應用可以觸發警報的頻率以及應用可以接收高優先級 Firebase 雲消息傳遞消息的頻率。這些限制僅適用於設備使用電池供電的情況;在設備充電期間,系統不會對應用施加這些限制。

注意:每個製造商都可以針對將非活動應用分配到存儲分區的方式設定自己的標準。您不應該試圖影響應用分配到哪個存儲分區,而應該專注於確保您的應用在可能處於的任何存儲分區中都運行良好。您的應用可以通過調用 UsageStatsManager.getAppStandbyBucket() 查明其當前所在的存儲分區。

這些存儲分區爲:

  • 活躍:應用目前正在使用中,或者最近剛剛使用過
  • 工作集:應用會定期使用
  • 常用:應用會經常使用,但不會每天使用
  • 極少使用:應用不經常使用

 

此外,對於已安裝但從未運行過的應用,還有一個特殊的從未使用存儲分區。系統會對這些應用施加嚴格的限制。

注意:基於應用待機模式存儲分區的限制不適用於低電耗模式白名單中的應用。

注意:以下說明適用於非預測性的情況。否則,當預測應用使用機器學習預測行爲時,會根據對用戶後續操作的預測(而不是使用時間的新近度)選擇存儲分區。例如,最近使用的應用可能會出現在極少使用的存儲分區中,因爲機器學習預測該應用在數小時內不會使用。

活躍

如果用戶當前正在使用某個應用或最近剛剛使用過該應用,則該應用位於活躍存儲分區中。例如:

  • 該應用啓動了一個 Activity
  • 該應用正在運行一項前臺服務
  • 該應用具有與前臺應用使用的內容提供程序相關聯的同步適配器
  • 用戶點按了應用通知

 

如果某個應用位於“活躍”存儲分區中,系統不會對應用的作業、警報或 FCM 消息施加任何限制。

工作集

如果某個應用經常運行,但當前未處於活躍狀態,則該應用位於工作集存儲分區中。例如,用戶多數時候都會啓動的社交媒體應用很可能位於工作集內。如果以間接的方式使用應用,這些應用也會被提升到工作集存儲分區。

如果某個應用位於工作集內,系統會對其運行作業和觸發警報的頻率施加輕微的限制。如需瞭解詳情,請參閱電源管理限制

常用

如果某個應用會定期使用,但不一定每天使用,則該應用位於常用存儲分區中。例如,用戶在健身房運行的鍛鍊跟蹤應用可能位於“常用”存儲分區中。

如果某個應用位於“常用”存儲分區中,則系統對其運行作業和觸發警報的頻率施加更嚴格的限制,還會對高優先級 FCM 消息設置上限。如需瞭解詳情,請參閱電源管理限制

極少使用

不經常使用的應用位於極少使用存儲分區中。例如,用戶只有在入住酒店時纔會運行的酒店應用可能就位於“極少使用”存儲分區中。

如果某個應用位於“極少使用”存儲分區中,則系統對其運行作業、觸發警報以及接收高優先級 FCM 消息的頻率施加嚴格的限制。 系統還會限制應用連接到互聯網的能力。如需瞭解詳情,請參閱電源管理限制

 

最佳做法

如果您的應用已經遵循低電耗模式和應用待機模式的最佳做法,那麼處理新的電源管理功能應該不難。不過,以前運行良好的某些應用行爲現在可能會導致問題。

  • 不要試圖迫使系統將您的應用放到某個特定的存儲分區中。系統的分區方法可能會發生變化,並且每個設備製造商都可以選擇使用自己的算法編寫自己的分區應用。您應該確保您的應用無論位於哪個存儲分區都運行正常。
  • 沒有啓動器 Activity 的應用可能永遠不會被提升到“活躍”存儲分區。您可能需要重新設計應用,使其具有此類 Activity。
  • 如果應用的通知不可操作,用戶將無法與通知互動,也就無法觸發應用提升到“活躍”存儲分區的操作。在這種情況下,您可能需要通過重新設計,使一些相應的通知允許用戶做出響應。部分指南請參閱 Material Design 通知設計模式
  • 同樣,如果應用在收到高優先級 FCM 消息時不顯示通知,用戶也沒有機會與應用互動並促使系統將應用提升到“活躍”存儲分區。事實上,高優先級 FCM 消息的唯一預期用途就是向用戶推送通知,因此絕不應出現這種情況。如果您將不會觸發用戶互動的 FCM 消息誤標爲高優先級,可能會造成其他負面影響;例如,這會導致您的應用耗盡其配額,導致真正緊急的 FCM 消息被視爲一般優先級。

    注意:如果用戶屢次忽略某個通知,系統會爲用戶提供以後屏蔽該通知的選項。不要僅僅爲了讓應用保持在“活躍”存儲分區中而向用戶發送大量通知!

  • 如果應用拆分爲多個軟件包,則這些軟件包可能位於不同的存儲分區中,並因此具有不同的訪問權限級別。對於軟件包會分配到不同存儲分區的此類應用,您應該進行測試,以確保該應用運行正常。

 

總結

應用待機存儲分區有助於系統根據應用的使用時間新近度和使用頻率對應用資源請求確定優先級

而分區算法可由設備製造商確認

存儲分區爲:

  • 活躍:應用目前正在使用中,或者最近剛剛使用過
  • 工作集:應用會定期使用
  • 常用:應用會經常使用,但不會每天使用
  • 極少使用:應用不經常使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章