性能優化07_電量消耗的全過程分析

Android性能優化彙總

電量損耗
屏幕 》蜂窩信號》wifi、GPS

設備忙着執行各種任務和各種複雜計算,秀自拍上傳朋友圈圖片、秀直播,設備硬件正在快速消耗電池電量來完成這些任務。很明顯,你的任務處理的越複雜,電量就會消耗的越多和越快,一眨眼的功夫電量就消耗完了,用戶的手機頓時變成個累贅的磚頭了,這時候用戶就會懷疑誰(哪個app)這麼耗電,把它卸了!
寫出耗電量低的應用的關鍵是要透徹理解它的全部過程。
在這裏插入圖片描述
在電子編程世界,這種硬件消耗電量 來執行任務的過程,叫做超時電流消耗,
任何電子編程專業的人都會告訴你,你的設備的各項活動在相同時間內,消耗的電量是不同的。
比如,很多手機號稱待機好幾天,這個確實是真的,不過就是使用飛行模式放在家裏什麼都不幹,確實可以甚至可以堅持10多天。
但是我們一旦使用它,比如使用蜂窩式無線數據交換(3G4G)、屏幕保持喚醒狀態等。
作爲開發者,我們很想知道我的應用執行的哪些任務消耗的電量是最多的?這個問題確實會很棘手。
電量消耗的計算與統計是一件麻煩而且矛盾的事情,記錄電量消耗本身也是一個費電量的事情(所以很多設備都把這個監測電量的功能閹割掉了。)。
唯一可行的方案是使用第三方監測電量的設備,這樣才能夠獲取到真實的電量消耗(因爲第三方硬件監測的時候是用的自己的供電而不是用的手機的電量)。
耗電情況,例如:打開屏幕,所有要使用CPU/GPU工作的動作都會喚醒屏幕,都會消耗電量。這和應用程序喚醒設備還不一樣。
比如使用叫醒鬧鐘(wake clock)、AlarmManager、JobSchedulerAPI。
在這裏插入圖片描述
待機狀態的電量消耗:
在這裏插入圖片描述
使用和喚醒屏幕後:
在這裏插入圖片描述
當設備從休眠狀態中,被應用程序假面喚醒時,你會看到在第一次喚醒時,這裏有一條電量使用高峯線

CUP喚醒時的高峯線:
在這裏插入圖片描述
接下來就是後續的一些執行的消耗了:
在這裏插入圖片描述
值得注意的是當工作完成後,設備會主動進行休眠,這非常重要,在不使用或者很少使用的情況下,長時間保持屏幕喚醒會迅速消耗電池的電量。
另外一種,蜂窩式無線也是耗電量非常可怕的。我出門就經常這樣幹,當我發現手機快沒電的時候,
我把蜂窩無線關了,留着緊急情況自己可以主動打電話,這個很有用 可以延長2小時的使用哦。

蜂窩式無線:
當設備通過無線網發送數據的時候,爲了使用硬件,這裏會出現一個喚醒好點高峯。
接下來還有一個高數值,這是發送數據包消耗的電量,
然後接受數據包也會消耗大量電量 也看到一個峯值。
所以我們指導了,開啓無線模式這個過程非常耗電,那麼硬件這塊爲了防止頻繁開啓關閉耗電,採取了一個無奈的辦法,會在一個小段時間內保持開啓模式,防止短時間內還有數據包需要接收。這些數據非常有用,可是 不是所有開發者都有這個第三方設備跟蹤。但是使用Android L版本就可以利用到新的一系列的工具來優化應用程序的耗電。(這裏顯然不要考慮兼容性問題吧,我只是想測電量消耗問題,同一款APP在不同版本上耗電情況應該不會有太大影響。)
在這裏插入圖片描述
二、Battery Historian
電量使用記錄分析工具。
通過ADB獲取的數據,通過使用Battery Historian工具分析處理後,得到的html結果文件,用瀏覽器可以直接查看的。
Battery Historian工具是一個獨立的Python開源腳本,可以從gitbub上下載。
請看詳細文檔:《battery-historian工具使用》

發佈了231 篇原創文章 · 獲贊 75 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章