耗電優化(一) Doze Standby

2021-10-19 07:04:20 字數 1504 閱讀 7320

從android6.0開始,系統提供了兩種省電功能(延長電池壽命和使用時間)
1.進入doze模式

在手機未充電,完全靜止且熄屏一段時間後,android系統會自動進入doze模式

2.doze模式效果

1.網路訪問被掛起

2.wake locks被無視

3.alarmmanager被推遲到下乙個maintenance window視窗,

除非使用alarmmanager新方法

:setandallowwhileidle

(),setexactandallowwhileidle

(),setalarmclock()

4.wifi掃瞄被停止

5.syncadapter同步工作被停止

6.jobscheduler定時任務被停止

doze模式的五種狀態

active

: 活動狀態

inactive

: 螢幕關閉進入非活動狀態

idle_pending

idle

: 空閒狀態

idle_maintenance:處理掛起任務

但隨著時間推移,間隔時間會變長,以此減少電量消耗

3.退出doze模式

1.手機充電

2.手機移動

3.手機螢幕開啟

doze模式需要螢幕關閉(通常晚上睡覺或長時間螢幕關閉才會進入)

if (build.version.sdk_int >= build.version_codes.m)

}新增守護程序,相互監聽重啟; 提醒使用者加入鎖屏清理白名單

2.手機重啟,alarmmanager任務失效

監聽重啟廣播,重新設定定時鬧鐘

3.從android4.

4(api19)開始,alarmmanager機制修改,

set(),

setrepeating

()定時不再精確,甚至setrepeating只生效一次(不會重複)

新增精確定時方法:

setexact()

,setwindow()

,setalarmclock()

,4.從android6.

0(api23)開始,進入doze模式(省電優化)

,alarmmanager被延緩

新增精確定時方法:

setandallowwhileidle()

,setexactandallowwhileidle()

從android4.

4(api19)開始,新增精準定時方法都是一次性鬧鐘,沒有重複定時的方法,

所以當需要重複週期鬧鐘,只能在下一次喚醒時重新設定定時,間接實現重複鬧鐘!

精確定時一次demo如下:

void

setwakeattime

(context cxt,

int delay)

Android APP耗電優化

picasso context context,dispatcher dispatcher,cache cache,listener listener,requesttransformer requesttransformer,listextrarequesthandlers,stats stats...

Android 耗電優化

一 監視電量的變化和充電狀態 當你通過降低後台任務的更新頻率來降低其對電量的影響時,檢測當前的電量和充電狀態都是乙個好的開始好的嘗試。應用的更新對電量的影響最好由剩餘電量和充電狀態決定。充電時,應用的更新操作對電量的影響可以忽略不計,此時你應該最大化你的重新整理頻率。相反的沒有充電時,降低你應用的更...

多平台訊息推送是安卓耗電原因之一?

研究訊息推送原理的過程中發現乙個安卓耗電的原因之一 ios平台的推送服務之所以工作的很好,是因為每一台手機僅僅保持乙個與伺服器之間的連線 apns 事實上c2dm android cloud to device messaging 或者gcm也是這麼工作的。但是gcm和c2dm在國內被牆,所以無法通...