對低電耗模式和應(yīng)用待機模式進行針對性優(yōu)化

? ? ? ?從Android 6.0(API 23)開始错邦,Android 引入了兩種省電功能(低電耗模式以及應(yīng)用待機模式),幫助用戶在設(shè)備未連接電源的時候延長電池的使用壽命申鱼。低電耗模式在設(shè)備長時間處于閑置狀態(tài)下會推遲應(yīng)用對CPU的使用以及對網(wǎng)絡(luò)的使用以減少電池消耗谒主。應(yīng)用待機模式可推遲用戶近期未與之的交互的應(yīng)用使用網(wǎng)絡(luò)。

?? ? ? ?低電耗模式以及應(yīng)用待機模式會影響運行在Android 6.0以及更高版本的系統(tǒng)上的應(yīng)用的行為搜囱,為了確保應(yīng)用的功能不受影響,需在低電耗模式和應(yīng)用待機模式下對其進行適配柑土;

低電耗模式

? ? ? ? 如果用戶設(shè)備未連接電源蜀肘、處于靜止狀態(tài)一段時間且屏幕關(guān)閉,設(shè)備就會進入低電耗模式冰单。在低電耗模式下幌缝,系統(tǒng)會嘗試通過限制應(yīng)用對網(wǎng)絡(luò)的訪問以及對CPU的使用來節(jié)省電量,還可以限制應(yīng)用的一些同步處理以及對系統(tǒng)鬧鈴的使用诫欠。

? ? ? ? 系統(tǒng)會定期退出低電耗模式一會兒涵卵,好讓應(yīng)用完成其推遲的活動,在退出低電耗模式的這個時間內(nèi)荒叼,系統(tǒng)會運行所有待處理的同步轿偎、作業(yè)并允許應(yīng)用訪問網(wǎng)絡(luò)。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 1.低電耗模式提供了定期維護時段被廓,可供應(yīng)用使用網(wǎng)絡(luò)并處理待定作業(yè)坏晦。

? ? ? ? 在每個維護時段結(jié)束后,系統(tǒng)會再次進入低電耗模式,暫停網(wǎng)絡(luò)訪問并推遲作業(yè)昆婿、同步和鬧鈴的使用球碉。隨著時間的推移,系統(tǒng)安排維護時段的次數(shù)越來越少仓蛆,這有助于設(shè)備未連接電源充電的時候睁冬,在長期處于不活動狀態(tài)的時候降低對電池的消耗。

?? ? ? ?一旦用戶移動設(shè)備看疙、打開屏幕或者連接到充電器的時候豆拨,系統(tǒng)就會退出低電耗模式,并且所有應(yīng)用都會恢復(fù)正常能庆。

低電耗模式限制

在低電耗模式下施禾,您的應(yīng)用會受到以下限制:

1、暫停訪問網(wǎng)絡(luò)搁胆。

2弥搞、系統(tǒng)將忽略wake locks

3渠旁、標準AlarmManager鬧鈴(包括setExact()setWindow())推遲到下一維護時段拓巧。如果您需要設(shè)置在低電耗模式下觸發(fā)的鬧鈴,請使用setAndAllowWhileIdle()setExactAndAllowWhileIdle()一死。一般情況下,使用setAlarmClock()設(shè)置的鬧鈴將繼續(xù)觸發(fā) — 但系統(tǒng)會在這些鬧鈴觸發(fā)之前不久退出低電耗模式傻唾。

4投慈、系統(tǒng)不執(zhí)行 Wi-Fi 掃描。

5冠骄、系統(tǒng)不允許運行同步適配器伪煤。

6、系統(tǒng)不允許運行JobScheduler凛辣。

應(yīng)用待機模式

? ? ? ? 應(yīng)用待機模式允許系統(tǒng)判定當(dāng)用戶未主動使用應(yīng)用時抱既,該應(yīng)用是處于空閑狀態(tài)的。當(dāng)用戶有一段時間未使用應(yīng)用時扁誓,系統(tǒng)便會做出判定防泵。以下條件系統(tǒng)均不會認為應(yīng)用處于空閑狀態(tài):

1、用戶顯式啟動應(yīng)用蝗敢。

2捷泞、應(yīng)用當(dāng)前有一個進程位于前臺(表現(xiàn)為 Activity 或前臺服務(wù)形式,或被另一 Activity 或前臺服務(wù)占用)寿谴。

3锁右、用戶可在鎖屏或通知欄中看到的通知。

4、系統(tǒng)應(yīng)用咏瑟。

? ? ? 當(dāng)用戶將設(shè)備插入電源時拂到,系統(tǒng)將從待機狀態(tài)釋放應(yīng)用,從而讓它們可以自由訪問網(wǎng)絡(luò)并執(zhí)行任何待定作業(yè)和同步码泞。 如果設(shè)備長時間處于空閑狀態(tài)兄旬,系統(tǒng)將按每天大約一次的頻率允許空閑應(yīng)用訪問網(wǎng)絡(luò)。

在設(shè)備空閑時使用 FCM 與您的應(yīng)用交互

? ? ? ??Firebase Cloud Messaging (FCM)是一項云端至設(shè)備的服務(wù)浦夷,允許您在后端服務(wù)與運行在Android 設(shè)備上的應(yīng)用之間實時進行下游消息傳遞辖试。FCM 提供了單一持久的云連接,所有需要實時傳遞消息的應(yīng)用均可共享此連接劈狐。此共享連接使多個應(yīng)用無需消耗電池即可維持自身單獨的持久連接罐孝,避免快速耗盡電池,從而顯著優(yōu)化電池消耗肥缔。 因此莲兢,如果應(yīng)用需要與后端服務(wù)進行消息傳遞集成,Google強烈建議盡量使用FCM续膳,而非維持自身持久的網(wǎng)絡(luò)連接改艇。

? ? ? ? FCM 經(jīng)過優(yōu)化,可將高優(yōu)先級 GCM 消息用于低電耗模式和應(yīng)用待機模式坟岔。FCM 高優(yōu)先級消息允許您可靠地喚醒應(yīng)用訪問網(wǎng)絡(luò)谒兄,即使用戶設(shè)備處于低電耗模式或應(yīng)用處于應(yīng)用待機模式也不例外。 在低電耗模式或應(yīng)用待機模式下社付,系統(tǒng)將傳遞消息并允許應(yīng)用臨時訪問網(wǎng)絡(luò)服務(wù)和部分喚醒鎖承疲,然后將設(shè)備或應(yīng)用恢復(fù)到空閑狀態(tài)。

? ? ? ? 高優(yōu)先級 FCM 消息不會影響低電耗模式鸥咖,也不會影響任何其他應(yīng)用的狀態(tài)燕鸽。這意味著您的應(yīng)用可以使用這些消息進行有效的通信,同時盡可能減少對整個系統(tǒng)和設(shè)備的電池影響啼辣。

? ? ? ? 作為一項常規(guī)最佳做法啊研,如果您的應(yīng)用需要下游消息傳遞,則應(yīng)使用 FCM鸥拧。如果您的服務(wù)器和客戶端已經(jīng)使用 FCM党远,請確保你的服務(wù)對關(guān)鍵消息使用高優(yōu)先級消息,因為即使設(shè)備處于低電耗模式富弦,這也會可靠地喚醒應(yīng)用麸锉。

加入白名單的可接受用例

? ? ? ? 下表重點介紹了請求加入或目前位于電池優(yōu)化豁免白名單中的可接受用例。 通常情況下舆声,除非低電耗模式或應(yīng)用待機模式破壞了應(yīng)用的核心功能花沉,或者由于技術(shù)方面的原因而導(dǎo)致您的應(yīng)用無法使用 FCM 高優(yōu)先級消息柳爽,否則您的應(yīng)用不應(yīng)出現(xiàn)在白名單上。

? ? ? ? 如需了解詳細信息碱屁,請參閱對其他用例的支持


對其他用例支持

? ? ? ? 通過妥善管理網(wǎng)絡(luò)連接娩脾、鬧鈴、作業(yè)和同步并使用 GCM 高優(yōu)先級消息柿赊,幾乎所有應(yīng)用都應(yīng)該能夠支持低電耗模式。但對于一小部分用例碰声,可能不能夠支持。 對于此類用例胰挑,系統(tǒng)為部分免除低電耗模式和應(yīng)用待機模式優(yōu)化的應(yīng)用提供了一份可配置的白名單。

? ? ? ? 在進入低電耗模式和應(yīng)用待機模式期間瞻颂,加入白名單的應(yīng)用可以使用網(wǎng)絡(luò)并保留部分 wake locks。 不過贡这,和其他應(yīng)用一樣,其他限制仍然適用于加入白名單的應(yīng)用盖矫。 例如,加入白名單的應(yīng)用的作業(yè)和同步將推遲(在 API 級別 23 及更低級別中)炼彪,并且其常規(guī)AlarmManager鬧鈴不會觸發(fā)。通過調(diào)用isIgnoringBatteryOptimizations()正歼,應(yīng)用可以檢查自身當(dāng)前是否位于豁免白名單中辐马。

? ? ? ? 用戶可以在Settings > Battery > Battery Optimization中手動配置該白名單【忠澹或者喜爷,系統(tǒng)會為應(yīng)用提供請求將應(yīng)用加入白名單的方式。

1萄唇、應(yīng)用可以觸發(fā)ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGSIntent檩帐,讓用戶直接進入Battery Optimization,他們可以在其中添加應(yīng)用另萤。

2湃密、具有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS權(quán)限的應(yīng)用可以觸發(fā)系統(tǒng)對話框诅挑,讓用戶無需轉(zhuǎn)到“設(shè)置”即可直接將應(yīng)用添加到白名單。應(yīng)用將通過觸發(fā)ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONSIntent 來觸發(fā)該對話框泛源。

3拔妥、用戶可以根據(jù)需要手動從白名單中移除應(yīng)用。

在請求將應(yīng)用添加到白名單之前达箍,請確保應(yīng)用符合加入白名單的可接受用例没龙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缎玫,隨后出現(xiàn)的幾起案子硬纤,更是在濱河造成了極大的恐慌,老刑警劉巖赃磨,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筝家,死亡現(xiàn)場離奇詭異,居然都是意外死亡煞躬,警方通過查閱死者的電腦和手機肛鹏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恩沛,“玉大人在扰,你說我怎么就攤上這事±卓停” “怎么了芒珠?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搅裙。 經(jīng)常有香客問我皱卓,道長,這世上最難降的妖魔是什么部逮? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任娜汁,我火速辦了婚禮,結(jié)果婚禮上兄朋,老公的妹妹穿的比我還像新娘掐禁。我一直安慰自己,他們只是感情好傅事,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布蹭越。 她就那樣靜靜地躺著响鹃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寄悯。 梳的紋絲不亂的頭發(fā)上堕义,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天洒擦,我揣著相機與錄音怕膛,去河邊找鬼褐捻。 笑死,一個胖子當(dāng)著我的面吹牛柠逞,可吹牛的內(nèi)容都是我干的板壮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笨使!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起繁调,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎门岔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糠悯,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡互艾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年纫普,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片节视。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡寻行,死狀恐怖匾荆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情简卧,我是刑警寧澤贞滨,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布晓铆,位于F島的核電站绰播,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏链蕊。R本人自食惡果不足惜滔韵,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一陪蜻、第九天 我趴在偏房一處隱蔽的房頂上張望贱鼻。 院中可真熱鬧,春花似錦症昏、人聲如沸肝谭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栏赴。三九已至,卻和暖如春须眷,著一層夾襖步出監(jiān)牢的瞬間花颗,已是汗流浹背惠拭。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留职辅,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓簇秒,卻偏偏與公主長得像秀鞭,于是被迫代替她去往敵國和親锋边。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容