Android性能優(yōu)化之耗電優(yōu)化

作為移動(dòng)設(shè)備册舞,電池重要性不言而喻壮虫,設(shè)備沒有電那就真的只能拿來砸核桃了。所以作為開發(fā)者的我們环础,為了給用戶帶來更好的體驗(yàn)囚似,耗電優(yōu)化一直是我們撇不開的話題。

1线得、為什么耗電

屏幕快照 2017-03-23 下午2.51.24.png

通過上圖先把用戶-電量這一流程抽象出來饶唤,設(shè)備的耗電根本原因在于對(duì)硬件的使用,耗電越嚴(yán)重說明對(duì)硬件使用的越頻繁贯钩。用戶對(duì)app頻繁使用說明了你用戶黏性做的好募狂,我們不能左右,所以我們要在app對(duì)硬件調(diào)用上做優(yōu)化來達(dá)到節(jié)省電量的目的角雷。

先看下移動(dòng)設(shè)備元件耗電大戶有哪些:


fullsizerender.jpg

2祸穷、屏幕

屏幕是耗電最大元件之一,但是用戶要和app交互就要點(diǎn)亮屏幕勺三,有人可能會(huì)覺得屏幕的明暗是用戶自己根據(jù)喜好設(shè)定的雷滚,我們無可奈何。其實(shí)不然吗坚,在有些時(shí)候是可以通過UI的設(shè)計(jì)來減少屏幕電能消耗的祈远。

在這之前我們先來看下目前常用手機(jī)屏幕材質(zhì):LCD和LED(OLED)呆万。

  • LCD概述
    LCD又名液晶顯示屏,屏幕由成千上萬(wàn)液晶分子負(fù)責(zé)像素顯示车份,并通過背光來將其照亮谋减。所以說每個(gè)像素點(diǎn)都使用了同一個(gè)光源,每個(gè)像素消耗的電量是相同的扫沼。
  • LED概述
    LED每個(gè)屏幕像素都可以看成是一個(gè)LED燈出爹,由RGB三種顏色共同呈現(xiàn),不同顏色能量消耗也各不相同缎除。黑色不使用任何顏色以政,不消耗能量,白色相反使用了所有顏色且亮度高伴找,所以能量消耗也更多盈蛮。

優(yōu)化方案:較暗的顏色比明亮的顏色更節(jié)能,所以在很多留白的地方可以考慮使用偏暗的色調(diào)技矮,當(dāng)然這要在不影響用戶體驗(yàn)的前提下抖誉。

3、無線網(wǎng)絡(luò)

無線網(wǎng)絡(luò)主要是WIFI和移動(dòng)運(yùn)營(yíng)商網(wǎng)絡(luò)衰倦,通常情況下使用移動(dòng)網(wǎng)絡(luò)要比WIFI耗電要多一些袒炉。

  • 移動(dòng)網(wǎng)絡(luò)
    移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)傳輸有3種狀態(tài):
    Full power:高功率狀態(tài),網(wǎng)絡(luò)激活樊零,允許設(shè)備以最大傳輸速率進(jìn)行傳輸我磁。
    Low power:低功率狀態(tài),傳輸速率低于15kbps驻襟,耗電是Full Power狀態(tài)的一半夺艰,一般不能直接從程序中進(jìn)入該狀態(tài),而是由Full Power狀態(tài)降級(jí)進(jìn)入沉衣。
    Standby:?空閑狀態(tài)郁副,沒有數(shù)據(jù)連接需要傳輸,耗電最少豌习。

這三種狀態(tài)有一個(gè)轉(zhuǎn)換流程:

mobile_radio_state_machine.png

可以看出存谎,三種狀態(tài)耗電不同,要使耗電最低應(yīng)該盡量保持狀態(tài)在空閑或低功率下肥隆。從空閑狀態(tài)轉(zhuǎn)換到高功率狀態(tài)需要2s既荚,從低功率狀態(tài)轉(zhuǎn)換到高功率狀態(tài)需要1.5s。應(yīng)用中每創(chuàng)建一個(gè)網(wǎng)絡(luò)連接栋艳,網(wǎng)絡(luò)射頻都會(huì)轉(zhuǎn)到高功率狀態(tài)恰聘,數(shù)據(jù)傳輸完畢降回低功率狀態(tài),降回過程需要5s,這5s耗電量保持在高功率狀態(tài)憨琳,低功率降回到空閑狀態(tài)需要12s,期間一直保持低功率狀態(tài)旬昭。所以每次的數(shù)據(jù)傳輸都將導(dǎo)致將近20s電量的消耗篙螟。

  • WIFI網(wǎng)絡(luò)
    WIFI在active狀態(tài)下有4種模式:低功率、高功率问拘、低傳輸遍略、高傳輸。
    當(dāng)從低(高)功率狀態(tài)傳輸數(shù)據(jù)時(shí)骤坐,WIFI會(huì)暫時(shí)進(jìn)入相應(yīng)地低(高)傳輸狀態(tài)绪杏,一旦數(shù)據(jù)傳輸完畢就回到初始狀態(tài)。

WIFI耗電是受包率(每秒接收和發(fā)送的數(shù)據(jù)包)和網(wǎng)速因素影響的纽绍。如果因素良好蕾久,即網(wǎng)絡(luò)良好時(shí),數(shù)據(jù)傳輸?shù)暮芸彀柘模訵IFI的高功率狀態(tài)維持時(shí)間很短僧著。這也就是為什么說移動(dòng)網(wǎng)絡(luò)耗電高于WIFI耗電,因?yàn)橥瑯拥臄?shù)據(jù)大小傳輸時(shí)障簿,移動(dòng)網(wǎng)絡(luò)固定狀態(tài)轉(zhuǎn)換就需要近20s的電量消耗盹愚。

通過上面了解網(wǎng)絡(luò)連接過程,應(yīng)該心里有了大概的優(yōu)化建議站故。

  • 網(wǎng)絡(luò)優(yōu)化方案:
    • 減少網(wǎng)絡(luò)高功率保持時(shí)間:
    • 1.文本和文件壓縮傳輸皆怕。
      不管發(fā)送還是請(qǐng)求數(shù)據(jù),在數(shù)據(jù)傳輸過程中使用gzip將數(shù)據(jù)進(jìn)行壓縮西篓。經(jīng)過壓縮的數(shù)據(jù)需要更短的時(shí)間傳輸即可完成愈腾,這樣是無線所處的高功率狀態(tài)時(shí)間更短,從而減少了耗電岂津。
    • 2.精簡(jiǎn)文本文件顶滩。
      所謂精簡(jiǎn)就是去掉文本中空行、空格寸爆、注釋等無意義內(nèi)容礁鲁。
<html>  
  <title> A Sample Page</title> 
  <body> 
    with some sample text 
    <--do more here--> 
  </body> 
</html>

精簡(jiǎn)后

<html>  <title> A Sample Page</title> <body> with some sample text <--do more here--> </body> </html>
- 3.根據(jù)顯示大小從服務(wù)器獲取圖片

①請(qǐng)求一個(gè)圖片時(shí),客戶端提供一個(gè)分辨率大小赁豆,服務(wù)器根據(jù)分辨率把裁剪縮放后的圖片給客戶端返回仅醇。也可以使用Android端使用Bitmap.Option自行獲取縮放的圖片
②使用webp圖片。

  • 減少網(wǎng)絡(luò)請(qǐng)求次數(shù)
    • 1.使用緩存魔种。
      把經(jīng)常使用的文件緩存到本地析二,如頭像icon、好友信息等。以后很多時(shí)間都可以直接從本地讀取緩存減少網(wǎng)絡(luò)請(qǐng)求次數(shù)叶摄。

    • 2.移動(dòng)網(wǎng)絡(luò)下最好批量執(zhí)行網(wǎng)絡(luò)請(qǐng)求属韧,利用一次高功率狀態(tài)執(zhí)行盡可能多的事情,從而減少頻繁間隔請(qǐng)求導(dǎo)致狀態(tài)轉(zhuǎn)換消耗更多電量蛤吓。

4宵喂、CPU

cpu利用率高和cpu的頻率高沒有必然關(guān)系,這取決于cpu調(diào)頻策略会傲。高利用率和高頻率的cpu都會(huì)導(dǎo)致高耗電锅棕。

  • 浮點(diǎn)運(yùn)算比整數(shù)運(yùn)算相對(duì)更消耗cpu時(shí)間片,相應(yīng)耗電也就增加淌山,因而在編碼過程盡量減少浮點(diǎn)運(yùn)算裸燎,例如使用位移代替除法。

  • 避免wakelock不正確使用
    wakelock可以喚醒設(shè)備也可以阻止設(shè)備休眠泼疑。在PowerManager類中谷歌已經(jīng)聲明了:這個(gè)類會(huì)影響設(shè)備電量德绿,除非必須,否則盡量不要使用該類退渗,同時(shí)使用完畢要盡快釋放脆炎。wankelock有幾種類型,在使用時(shí)注意選擇正確地類型氓辣。

  • 使用JobScheduler
    很多時(shí)候?yàn)榱藵M足我們的需求而沒有考慮cpu的感受秒裕,為了執(zhí)行1s中的數(shù)據(jù)區(qū)喚醒cpu,但實(shí)際卻消耗了約兩分鐘的電量钞啸。為此谷歌在5.0系統(tǒng)下提供了JobScheduler組件几蜻,使用場(chǎng)景:
    必要不緊急,可延遲執(zhí)行的任務(wù)体斩,比如數(shù)據(jù)塊更新梭稚,bug日志上報(bào)。
    耗電大德任務(wù)絮吵,如備份在充電時(shí)執(zhí)行弧烤。

  • Doze模式

Doze模式通過限制應(yīng)用訪問網(wǎng)絡(luò)及其他一些操作頻率,從而減少cpu開銷達(dá)到省電目的蹬敲。在6.0系統(tǒng)上未連接電源暇昂、屏幕關(guān)閉就會(huì)進(jìn)入Doze模式。但是為了不影響應(yīng)用正常工作伴嗡,系統(tǒng)還會(huì)周期性退出Doze急波,在退出期間去執(zhí)行那些被掛起的任務(wù),這個(gè)時(shí)間窗口稱作維護(hù)窗口瘪校。

5澄暮、其他優(yōu)化

  • 傳感器
    每個(gè)傳感器都有最大信號(hào)頻率名段,開發(fā)者在使用傳感器時(shí)要設(shè)置合適的采樣頻率。最后在使用完成后一定要進(jìn)行注銷泣懊,否則激活的傳感器會(huì)一直進(jìn)行檢測(cè)伸辟,造成cpu負(fù)載和電量消耗。

后面的章節(jié)會(huì)寫一些關(guān)于電量檢測(cè)分析工具的使用馍刮。

為了耗電優(yōu)化干的這些活用戶感知不到信夫,但是如果不去優(yōu)化,肆意使用渠退,那用戶就很容易感知到了忙迁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脐彩,一起剝皮案震驚了整個(gè)濱河市碎乃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惠奸,老刑警劉巖梅誓,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異佛南,居然都是意外死亡梗掰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門嗅回,熙熙樓的掌柜王于貴愁眉苦臉地迎上來及穗,“玉大人,你說我怎么就攤上這事绵载」÷剑” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵娃豹,是天一觀的道長(zhǎng)焚虱。 經(jīng)常有香客問我,道長(zhǎng)懂版,這世上最難降的妖魔是什么鹃栽? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮躯畴,結(jié)果婚禮上民鼓,老公的妹妹穿的比我還像新娘。我一直安慰自己蓬抄,他們只是感情好摹察,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著倡鲸,像睡著了一般供嚎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天克滴,我揣著相機(jī)與錄音逼争,去河邊找鬼。 笑死劝赔,一個(gè)胖子當(dāng)著我的面吹牛誓焦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播着帽,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杂伟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了仍翰?” 一聲冷哼從身側(cè)響起赫粥,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎予借,沒想到半個(gè)月后越平,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灵迫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年秦叛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瀑粥。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挣跋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狞换,到底是詐尸還是另有隱情避咆,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布哀澈,位于F島的核電站牌借,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏割按。R本人自食惡果不足惜膨报,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望适荣。 院中可真熱鬧现柠,春花似錦、人聲如沸弛矛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丈氓。三九已至周循,卻和暖如春强法,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背湾笛。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工饮怯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嚎研。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓蓖墅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親临扮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子论矾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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