乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Android耗電量測試及排查方法

       小胖魚與小松鼠 2016-09-23



      上圖為2016年6月Google更新的Android系統(tǒng)分布圖,顯示運行每個Android版本的活躍用戶比例,由上圖得知,5.0及以上系統(tǒng)占比正在加大,而4.X占比依然是最多的,所以耗電量分析也要從4.X和5.0級以上的系統(tǒng)來研究。

      Android應(yīng)用耗電量一直是比較麻煩的,也是大家所關(guān)注的問題,在4.4系統(tǒng)之前,google一直沒有相關(guān)API暴露給外面,所以要研究4.4系統(tǒng)以前的耗電量,就需要研讀Android的源碼;5.0之后的系統(tǒng),就可以使用adb命令直接獲取。



      Android電量獲取源碼分析


      源碼中到底哪個部分是真正計算耗電量的呢?首先打開Android系統(tǒng)源碼,找到設(shè)置的activity中的電池的部分,也就是”com.android.setting.fuelaguge”這個包里面的PowerUsageSummary類,該類是篩選耗電量最多的前十個應(yīng)用,而真正計算app的耗電量的是BatteryStatsHelper這個類中的processAppUsage,所以只需要研究processAppUsage這個類的具體實現(xiàn)方法就可以解開我們的疑惑啦~

      細查看BatteryStatsHelper中的processAppUsage這個類,就可以看出,每個app的耗電量主要由以下幾個方面決定:cpu的耗電量、wakelock的耗電量、wifi的耗電量、移動數(shù)據(jù)的耗電量和其他傳感器的耗電量。


      CPU的耗電量計算



      如上圖源碼,cpu的耗電量為cpu的運行時間和cpu每秒耗電的乘積(里面值得注意的是CPU的速度分為幾個檔次,每個檔次的每秒耗電不同)。


      Wakelock耗電量統(tǒng)計



      如上圖源碼,wakelock的耗電量為partial wake locks的次數(shù)和每次wakelock的耗電的乘積。WakeLock是一種鎖機制,只要有人拿著這把所,系統(tǒng)就無法進入休眠階段。其實android系統(tǒng)有多種類型的wakelock,partialwake lock、screendimwake lock、screenbrightwake lock和fullwake lock四中,四種wakelock的共同的都是保持CPU運行,但是屏幕和鍵盤燈有區(qū)別,這個源碼中,只計算了partialwake lock這一種情況,而且只計算了其中的cpu的影響。


      WIFI耗電量計算



      Wifi的耗電量包括三個部分,一個是wifi流量、wifi維持耗電量和wifi掃描耗電量,最重要的還是wifi流量耗電量。


      移動網(wǎng)絡(luò)耗電量計算



      4.4的源碼中,移動網(wǎng)絡(luò)的耗電量,是根據(jù)移動網(wǎng)絡(luò)的上傳和下載的流量之和與每字節(jié)流量的耗電量的乘積。5.0及以后的版本,移動網(wǎng)絡(luò)的耗電量是根據(jù)packet個數(shù)來計算耗電量。


      傳感器耗電量計算



      傳感器耗電量計算方式為各種傳感器的單位時間耗電量(multiplier)和運行時間(sensorTime)的乘積之和。不過GPS傳感器和其他傳感器的單位耗電量計算方式不同。



      dumpsys batterystats獲取電量


      Android5.0后,就可以直接使用adb命令很方便的獲取電量了,具體方法如下:

      1. 首先通過app的包名獲取其PID(Process Identifier):adb shell ps |find “com.baidu.example”,獲取的數(shù)據(jù)第一個參數(shù)就是UID,需要將該UID換成標(biāo)準(zhǔn)格式,如下圖,去掉下劃線即為該app的UID。

      2. 通過UID和包名獲取該app的自從數(shù)據(jù)線上次拔插的電量:adb shell dumpsys batterystats “com.baidu.example”  |find  “***”,將***替換成UID即可,如下圖,獲取到的app的電量為6.47mAh。

      3. 如果想看到完整耗電量的數(shù)據(jù),可以直接將batterystats的內(nèi)容保存在本地。


      4. 文件里面有很詳細的耗電量信息,包括:battery history:哪個應(yīng)用打開了多少秒,之后做了哪些操作等


      Per-PID Stats:每個應(yīng)用的wake timeEstimated Power User:里面包括每個應(yīng)用的耗電量(上面方法就是獲取該耗電量)


      還有All kernel wake locks和All partial wake locks等

      也可以通過該方法獲取競品的待機耗電量和相同操作下的功能耗電量,與自身app進行比對。


      耗電量高的排查方法


      由以上分析每個App的耗電量主要由以下幾個方面決定:cpu的耗電量、wakelock的耗電量、wifi的耗電量、移動數(shù)據(jù)的耗電量和其他傳感器的耗電量,而從dumpsys batterystats中獲取的是App的總耗電量,怎么區(qū)分到底是哪些部分更耗電呢?

      介紹2款A(yù)pp,適用條件:手機需root

      一個是google公司研發(fā)的功耗分析的工具PowerTutor,優(yōu)點是可以在將數(shù)據(jù)在同一環(huán)境下與競品的數(shù)據(jù)進行比對,可以方便的開始記錄,并且可以導(dǎo)出log,log每分鐘記錄一次所有應(yīng)用的功耗,包含了LCD,CPU,GPS,3G等產(chǎn)生功耗,缺點是PowerTutor并不通用,只實現(xiàn)了3中機型:G1、G2和Nexus One,其余的機型都歸為Unknown,數(shù)據(jù)可能不夠精確,如果測試條件允許的話,還是最好使用支持的機型,apk直接在應(yīng)用市場中搜索下載。


      另外一個是BetterBatteryStats,該工具是asksven研發(fā)的,主要是用來檢測待機情況下,每個應(yīng)用對手機電池的影響,該應(yīng)用主要分wakelock、alarm、network三種情況下每個應(yīng)用的情況,可以用該應(yīng)用來初步判定App電池耗電的主要原因,在alarm數(shù)據(jù)中,顯示每個應(yīng)用自手機開機被喚醒的次數(shù),占比,點擊某個應(yīng)用,會顯示該應(yīng)用的耗電最多的操作;network數(shù)據(jù)中,會顯示每個應(yīng)用通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的字節(jié)數(shù)和占比,如下圖:


      介紹一個google工具,battery history,適用條件:5.0及以上手機。

      需要下載batteryhistory相關(guān)的腳本,具體步驟:首先進行初始化操作,打開電池數(shù)據(jù)的獲取以及重置(下圖步驟1/2),然后進行一些操作,手動或者自動化都可以,經(jīng)過一段時間后,獲取bugreprot信息,并將其轉(zhuǎn)化為html文件(下圖步驟3/4)


      打開html文件如下,橫坐標(biāo)是時間,縱坐標(biāo)是每個影響電量指標(biāo)的參數(shù)。





      如果你看的意猶未盡,如果你想隨時隨地充實自己,請登錄MTC官網(wǎng)(mtc.baidu.com),可以獲取更多技術(shù)類干貨,還有精彩活動與你分享~

      百度MTC

      度移動云測試中心簡稱MTC(Mobile Testing Center),基于眾包模式和云技術(shù),為每個App提供一站式測試服務(wù)。針對不同開發(fā)階段、不同團隊規(guī)模提供定制化解決方案,不論是0測試團隊,還是追求極致用戶體驗的產(chǎn)品,讓創(chuàng)業(yè)者從此告別App開發(fā)過程中面臨的缺設(shè)備、缺人力、缺技術(shù)囧境。

      • 擁有千人測試團隊,上萬臺真機;

      • 專注App測試領(lǐng)域,提供全面兼容測試、深度性能測試;

      • 擁有海量用戶資源,支持功能測試、探索測試、問題定位測試。

      MTC

      精益求精的開發(fā)者最終的選擇!


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多