使用battery-historian來監測電量的情況,battery-historian時google的乙個開源專案
具體安裝過程參見:
當出現下列畫面,說明已經開啟
其開啟成功以後,訪問網頁如下所示
說明:這裡使用的是一台國外的vps伺服器,原本是想在本地虛擬機器實驗的,一直連線超時,就換成了vps了,在本地的話可以編譯源**得到測試環境,以下是本地得到環境的示例
如果是7.0及以上android版本,使用
adb bugreport > bugreport.zip
6.0及以下使用
adb bugreport > bugreport.txt
下面是我手裡面的兩部手機抓取到的報告(紅公尺4和一加5)
資料準備
battery-historian
工具需要使用bugreport
中的battery history
1.先斷開adb服務,然後開啟adb服務
adb kill-server
這一步很重要,因為當我們開發時做電量記錄時會開啟很多可能造成衝突的東西。為了保險起見我們重啟adb
adb devices
就會自動連線查詢手機。當然也可以adb start-server
2.重置電池資料收集資料,我們在開始的時候需要通過以下命令來開啟電池資料的獲取以及重置:
有時候會產生錯誤,此時重啟手機就好了
adb shell dumpsys batterystats --enable full-wake-history
adb shell dumpsys batterystats --reset
上面的操作相當於初始化操作,如果不這麼做會有一大堆的干擾的資料,看起來會比較痛苦。然後把資料線直接拔掉(防止資料線造成充放電資料干擾),現在做一些測試,手動或者跑一些自動化的case都行。經過一段時間後,我們重新連線手機確認adb連上了,執行下面這條命令來將bugreport的資訊儲存
adb bugreport > bugreport.txt[bugreport.zip]
可以使用工具將txt轉化為html,方便在本地閱讀
python historian.py -a bugreport.txt > battery.html
轉換後生成乙個html檔案,使用瀏覽器開啟即可
historian.py
位於script目錄下
此時就可以在本地瀏覽資訊了
橫座標時間軸
縱座標有些耗電的操作可以保留到手機充電時候再作處理
private
boolean
checkforpower()
return
(usb || ac || wireless)
;}
有些操作可以放到wifi連線以後去操作
//判斷網路連線
private
boolean
isnetworkconnected()
系統為了節省電量,cpu在沒有任務忙的時候就會自動進入休眠,有任務需要喚醒cpu高效執行的時候,就會給cpu加wake_lock鎖
wake_lock鎖主要是相對系統的休眠而言的,意思就是我的程式給cpu加了這個鎖那系統就不會休眠了,這樣做的目的是為了全力配合我們程式的執行
powermanager pw;
powermanager.wakelock mwakelock;
pw =
(powermanager)
getsystemservice
(power_service)
;mwakelock = pw.
newwakelock
(powermanager.partial_wake_lock,
"wakelock");
mwakelock.
acquire()
;//喚醒cpu
···if
(mwakelock.
isheld()
)
使用許可權
android:name
="android.permission.wake_lock"
/>
大量高頻次的cpu喚醒及操作,我們最好把這些操作集中處理
我們可以採取一些演算法來解決:jobscheduler/gcm
效能優化 電量優化
使用battery historian來監測電量的情況,battery historian時google的乙個開源專案 具體安裝過程參見 當出現下列畫面,說明已經開啟 其開啟成功以後,訪問網頁如下所示 說明 這裡使用的是一台國外的vps伺服器,原本是想在本地虛擬機器實驗的,一直連線超時,就換成了vp...
Android效能優化之電量優化
android應用開發中存在很多比較耗電的特性。例如網路,定位,感測器等,同時關於一些關鍵的api的正確使用也是有效降低應用耗電的手段,例如broadcastreceiver,alarmmanager,wakelock等。為了減少應用的損耗的電量,在 實現中需要盡量避免無用操作 的執行。當應用退到後...
Android電量優化
目前先寫乙個low版本的 過兩天來個超詳細版本的電量優化 學習自電量1.合理用wake lock不讓螢幕鎖定 並合理釋放wake lock 2.電量充足或者充電中的狀態,進行某些操作,如上傳歌曲 處理 3.打包零散網路請求,因為無線訊號的電量消耗是很大的 4.預取 5.jobscheduler等到正...