天天看點

Android應用電量消耗評估的三闆斧

這裡隻是使用最簡單的方法對你的app的電量消耗進行評估,如果還想更加詳細或者複雜的方法,可以使用一些比較專用的工具,比如Emmagee(https://github.com/NetEase/Emmagee),這個就很好用。

第一招:看系統的 設定-電池 裡面的耗電排名。

除非你的APP耗電很出格,一用手機就發燙、電量直線往下掉,否則,對于大多數使用者,你到底耗電怎麼樣,主要就是看這個了。

先測測你的靜默耗電:

不要插usb和電源,在不充電的情況下,保持你的app前台或者背景靜默一晚上,也可以根據不同業務場景,多測幾次,然後在 設定-電池 中,看看你的耗電排名,以及進一步點選看看具體開銷。

再測測你的操作耗電:

步驟一樣,隻不過,你可以拿競争對手或者業内标杆來進行下對比,各正常操作10分鐘,然後再看耗電的排名和具體開銷,相信自己的app耗電在什麼水準上,應該心裡有數了。

第二招:通過adb工具檢視各部件的耗電。

    手機中的每個部件(CPU、LED、sensor、GPS、3G、wifi 、wakelock等等)運作時對應的能耗值都放power_profile.xml 檔案中, 而且系統的設定-->電池-->使用情況中,統計的能耗使用情況也是以power_profile.xml的value 作為基礎參數的。通過指令監控app各部件的使用時長,然後結合裝置耗電的基礎參數進行權重計算,即可得到 app 使用的耗電量。操作步驟如下: 

1) 拔掉 usb 連接配接;

2) 操作 app(比如保持前台、背景靜默一段時間);

3) 插上 usb,執行 adb shell dumpsys batteryinfo,找到你的應用對應UID資源使用,如下所示Wake lock GCM_LIB: 24m 41s 316ms長時間使用,導緻耗電:

  #10062:

    Network: 160.39KB received, 150.69KB sent

    Wake lock window: 4s 729ms window (2 times) realtime

    Wake lock GCM_LIB: 24m 41s 316ms partial (1 times) realtime

    Wake lock AlarmManager: 32ms partial (23 times) realtime

    TOTAL wake: 24m 41s 348ms partial, 4s 729ms window realtime

    Sensor GPS: (not used)

    Proc *wakelock*:

      CPU: 9s 230ms usr + 9s 470ms krn

    Proc com.xxxx.xxxx:

      CPU: 1s 120ms usr + 770ms krn

    Proc com.xxxx.xxxx::

      CPU: 33s 140ms usr + 7s 320ms krn

    Apk com.xxxx.xxxx::

      Service com.xxxx.xxxx::

        Created for: 47m 23s 532ms  uptime

        Starts: 1, launches: 1

      Service com.xxxx.xxxx::

        Created for: 15s 910ms  uptime

        Starts: 19, launches: 19

        ……

4) 監控app wake lock 類型、次數以及時間,傳感器的使用時間,網絡流量的開銷,各子個程序的 CPU 使用時間;

第三招:觀察cpu開銷

保持前背景靜默的時候,通過指令 adb shell top -d 1 |grep yourapp,可以觀察你的應用相關程序的cpu開銷。

前台靜默時在滾屏、倒計時等不可視的時候,我們期望cpu占用0%。

尤其是背景靜默,一旦超過0%,必然持續耗電,都必須解決。

簡簡單單3招,足以讓你對你的APP的耗電量有個大概的評估,而且,對存在的問題有個大概的定位。

對于無線裝置發展到今天的地步,性能越來越不再是問題了,但是,電量卻依然是目前最大的一個瓶頸,你的APP想因為耗電而被使用者“請出”裝置嗎?不妨動起來,試試這簡單的三闆斧。