Android電量優化,讓你的手機續航更持久
開啟掘金成長之旅!這是我參與「掘金日新計劃 · 2 月更文挑戰」的第 2 天,點選檢視活動詳情
節能減排,從我做起。一款Android應用如果非常耗電,是一定會被主人嫌棄的。自從Android手機的主人用了你開發的app,一天下來,也沒幹啥事,電就沒了。那麼他就會想盡辦法找出耗電量殺手,當他找出後,很有可能你開發的app就被無情的解除安裝了。為了避免這種事情發生,我們就要想想辦法讓我們的應用不那麼耗電,電都用在該用的時候和地方。
通過power_profile.xml檢視各個手機硬體的耗電量
Google要求手機硬體生產商都要放入power_profile.xml檔案到ROM裡面。有些不太負責的手機生產商,就亂配,也沒有真正測試過。但我們還是可以大概知道耗電的硬體都有哪些。
先從http://ibotpeaches.github.io/Apktool/ 下載apktool反編譯工具,然後執行adb命令,將手機framework的資源apk拉取出來。
adb pull /system/framework/framework-res.apk ./
然後我們用下載好的反編譯工具,將framework-res.apk進行反編譯。
java -jar apktool_2.7.0.jar d framework-res.apk
apktool_2.7.0.jar換成你下載的具體的jar包名稱。
power_profile.xml檔案的目錄如下:
framework-res/res/xml/power_profile.xml
```xml
電量殺手簡介
Screen
螢幕是非常耗電的一個硬體,不要問我為什麼。螢幕主要有LCD和OLED兩種。LCD螢幕白色光線從螢幕背後的燈管發出,儘管螢幕顯示黑屏,依舊耗電,這種螢幕逐漸被淘汰,如果你翻出個早點的功能機,或許能看到。那麼大部分Android手機都是OLED的螢幕,每個畫素點都是獨立的發光單元,螢幕黑屏時,所有畫素都不發光。有必要時,讓螢幕息屏很重要,當然手機也有自動息屏的時間設定,這個不太需要我們操心。
Radio資料網路和Wi-Fi無線網路
網路也是非常耗電的,其中又以資料網路的耗電更多於Wi-Fi的耗電。所以請儘量引導使用者使用Wi-Fi網路使用app的部分功能,比如下載檔案。
GPS
GPS也是很耗電的硬體,所以不要動不動就請求地理位置,GPS平常是要關閉的,除非你在使用定位和導航等功能,這樣你的手機續航會更好。
WakeLock
如果使用了WakeLock,是可以有效防止息屏情況下的CPU休眠,但是如果不用了,你不釋放掉鎖的話,則會帶來很大的電量的開銷。
檢視手機耗電的歷史記錄
// 上次拔掉電源到現在的耗電情況
adb shell dumpsys batterystats --unplugged
你在逗我?讓我看命令列的輸出?後面我們來使用Battery Historian的圖表進行分析。
使用Battery Historian分析手機耗電量
安裝Docker
Docker下載網址 http://docs.docker.com/desktop/install/mac-install/
使用Docker容器編排
docker run -p 9999:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
獲取bugreport檔案
Android7.0及以上
adb bugreport bugreport.zip
Android6.0及以下
adb bugreport > bugreport.txt
上傳bugreport檔案進行分析
在瀏覽器位址列輸入http://localhost:9999
點選Browse按鈕並上傳bugreport.zip或bugreport.txt生成分析圖表。
我們可以通過時間軸來分析應用當下的電池使用情況,比較耗電的是哪部分硬體。
使用JobScheduler來合理執行後臺任務
JobScheduler是Android5.0版本推出的API,允許開發者在符合某些條件時建立執行在後臺的任務。比如接通電源的情況下才執行某些耗電量大的操作,也可以把一些不緊急的任務在合適的時候批量處理,還可以避開低電量的情況下執行某些任務。
- Android效能優化之記憶體優化
- 區塊鏈到底能不能落地,去中心化有沒有必要
- Flutter開發 - 使用GetX框架實現類似MVVM架構
- Android電量優化,讓你的手機續航更持久
- Android對Firebase崩潰日誌和埋點分析的整合
- Android程式碼實現新年賀卡動畫
- Android應用新增谷歌登入(Google Sign In)
- Android自定義View - DoraEmptyLayout
- 全新升級的AOP框架Dora.Interception[6]: 框架設計和實現原理
- 如何高效讀寫百萬級的Excel?
- 紅人姜Dora:從雙非二本到頂級網際網路大廠,一個普通人的升級打怪之路
- 頭等倉:深度解析波卡生態 DAO 基礎設施 Dora Factory
- 6年,12dora終渡B劫
- 6年,12dora終渡B劫