1. 程式人生 > >Android 應用App如何對應用電量的消耗進行管理和優化,耗電因素有哪些?

Android 應用App如何對應用電量的消耗進行管理和優化,耗電因素有哪些?

最近在關注應用耗電量的問題的時候,總結了以下耗電因素:

  1.app 佔用CPU資源,wifi GPS 等

  2.流量資源

 3.服務使用完了,未進行關閉, 程式後臺自啟動等.

4.網路請求消耗

5.高頻的重新整理UI操作(一個介面儘量少巢狀太多層,巢狀太多,重新整理的時候也會增加電磁的消耗)

6.資料庫和SD卡的檔案操作.

7.例如一些推送的心跳包的實現,每次推送,都會喚醒CPU

8. 手機訊號不好的時候,一會造成wifi和網路的隨時切換,這個過程不可避免的會喚醒CPU,導致增加電量的消耗

9.針對一些任務佇列的處理,如果佇列堆積的任務太多,導致迴圈執行太久也會造成耗電,因為佔用了CPU資源去執行程式碼,我們的log日誌工具儲存到檔案就是用任務佇列實現的,當壓力測試SDK一次性接受1萬條訊息的時候,那記憶體就表上來了,跟了下發現日誌儲存佇列裡面積壓了4千多個任務,這時候即使手機鎖屏,也還會不斷的把佇列中的任務執行完然後CPU才會休眠下去的,同樣會造成嚴重的耗電,耗記憶體

10.realse的時候,日誌忘記關閉,導致,使用者在使用app的是會有,不斷的產生新的日誌,也會增加cpu的負擔,從而增加電量的消耗執行一些高運算量的程式碼,例如json資料解析,一些二進位制協議的資料編碼和解碼 11.接收系統的一分鐘廣播,然後做一些程式邏輯處理,其實接收一分鐘廣播不耗電,耗電的是一分鐘執行一次程式處理 12.Wake Lock使用不當導致沒有及時的釋放,Wake Lock可以阻止cpu進入休眠的,如果沒有及時的release會造成cpu無法休眠,程式耗電嚴重 13.如果程式中有定時任務,在cpu休眠之後,定時任務就會被掛起不執行,這時候並不會造成太大的耗電,但是如果這個定時任務的時間間隔很短,1秒執行一次,那麼當手機app集成了推送,推送就會有心跳包通過AlarmManager來喚醒,每次喚醒的時候就會再去執行掛起的定時任務,雖然執行定時任務的耗電量可能比心跳包的耗電量少很多,不過還是需要注意的,積少成多 14.在手機鎖屏後,CPU會過一段時間才休眠,如果程式中有定時任務,在CPU休眠後會被掛起不執行,但是在CPU休眠之前,定時任務還是會一直的執行的,之前遇到過這麼一個問題,我們採用Picasso庫:Picasso.with(context)  

記錄Android app耗電量的檔案地址路徑:

     在官方文件《Power Profiles for Android》明確了power_profile.xml位置:device///frameworks/base/core/res/res/xml/power_profile.xml。

(1)Android部件電流資訊存於:power_profile.xml

        (2)每個OEM廠商有私有power_profile.xml

        (2)PowerProfile讀取power_profile.xml,並提供API訪問部件電流數值。

參考文章:

4.