我們?cè)谧鯽pp耗電量測(cè)試時(shí),重點(diǎn)關(guān)注的是待機(jī)時(shí)的耗電情況,那么影響待機(jī)耗電量的因素有哪些呢,本文對(duì)最近的思考和實(shí)踐進(jìn)行了簡(jiǎn)單的總結(jié)。
首先安卓中的定時(shí)操作
安卓中定時(shí)功能使用AlarmManager實(shí)現(xiàn),這個(gè)AlarmManager里持有一個(gè)wakelock對(duì)象,
從名字就可以看出,wakelock是一個(gè)喚醒鎖,安卓就是通過(guò)這個(gè)鎖保證在鬧鐘喚醒時(shí)我們的操作做完,不至于立即又恢復(fù)到待機(jī)狀態(tài)。
wakelock也可以在代碼中申請(qǐng)和使用。下圖是使用耗電量檢測(cè)工具GSam Monitor進(jìn)行的監(jiān)控結(jié)果截圖。

GSam Monitor對(duì)app使用的wakelock進(jìn)行了統(tǒng)計(jì),在進(jìn)行耗電量測(cè)試時(shí),我們可以通過(guò)這里
分析后臺(tái)的操作是否符合我們的預(yù)期,拿助手項(xiàng)目來(lái)說(shuō),在待機(jī)時(shí)使用wakelock的只有alarmmanager,從需求角度分析,我們每天有1個(gè)配置文件
的請(qǐng)求和2類(lèi)通知的請(qǐng)求是定時(shí)操作的,那么當(dāng)我待機(jī)一天后,會(huì)看到wakelock詳情中的alarmmanager數(shù)字增加了3,如果數(shù)字不是3,就可能是
開(kāi)發(fā)有些其他的實(shí)現(xiàn)或者bug,就需要進(jìn)行跟進(jìn)了。
監(jiān)聽(tīng)的各種廣播(安卓的Broadcast Receiver機(jī)制)
廣播(Broadcast)既可能是系統(tǒng)發(fā)出的,也可能是app自定的,所以我們?cè)跍y(cè)試耗電量時(shí)要遍歷app注冊(cè)所有廣播
網(wǎng)絡(luò)條件影響
有些app會(huì)有些預(yù)下載的操作,在鬧鐘觸發(fā)了后進(jìn)行預(yù)下載,與下載有關(guān)的操作當(dāng)然與網(wǎng)絡(luò)環(huán)境有關(guān),這里需要考慮以下幾種網(wǎng)絡(luò)環(huán)境狀態(tài)
wifi且網(wǎng)絡(luò)狀態(tài)良好
數(shù)據(jù)網(wǎng)絡(luò)且網(wǎng)絡(luò)狀態(tài)良好
弱網(wǎng)絡(luò)情況,這種情況又分為信號(hào)較差導(dǎo)致的傳輸速率較慢的情況,手機(jī)在wifi和數(shù)據(jù)網(wǎng)絡(luò)持續(xù)切換情況,網(wǎng)絡(luò)的丟包率高導(dǎo)致不斷地重試情況。
弱網(wǎng)絡(luò)的模擬可以作為單獨(dú)一個(gè)點(diǎn)來(lái)調(diào)研
**系統(tǒng)資源情況 **
在待機(jī)時(shí),不光被測(cè)app有活動(dòng),其他app也能會(huì)有活動(dòng),如果其他app活動(dòng)時(shí)資源不足,系統(tǒng)很可能進(jìn)行資源回收,被測(cè)app的服務(wù)很可能被殺掉或重啟,這也是影響耗電量測(cè)試結(jié)果的一個(gè)重要因素。