应用耗电的统计

一:按照uid粒度类统计。

二:每个uid维护了一堆的时间计数器,有打开和关闭这些时间计数器的方法。具体是:

       StopwatchTimer mWifiRunningTimer;
        StopwatchTimer mFullWifiLockTimer;
        StopwatchTimer mWifiScanTimer;
        StopwatchTimer[] mWifiBatchedScanTimer;
        StopwatchTimer mWifiMulticastTimer;
        StopwatchTimer mAudioTurnedOnTimer;
        StopwatchTimer mVideoTurnedOnTimer;
        StopwatchTimer mFlashlightTurnedOnTimer;
        StopwatchTimer mCameraTurnedOnTimer;
        StopwatchTimer mForegroundActivityTimer;
        StopwatchTimer[] mProcessStateTimer;
        BatchTimer mVibratorOnTimer;

        LongSamplingCounter[] mNetworkByteActivityCounters;
        LongSamplingCounter[] mNetworkPacketActivityCounters;
        LongSamplingCounter mMobileRadioActiveTime;
        LongSamplingCounter mMobileRadioActiveCount;
        LongSamplingCounter[] mWifiControllerTime =
                new LongSamplingCounter[NUM_CONTROLLER_ACTIVITY_TYPES];
        LongSamplingCounter[] mBluetoothControllerTime =
                new LongSamplingCounter[NUM_CONTROLLER_ACTIVITY_TYPES];
        LongSamplingCounter mUserCpuTime = new LongSamplingCounter(mOnBatteryTimeBase);
        LongSamplingCounter mSystemCpuTime = new LongSamplingCounter(mOnBatteryTimeBase);
        LongSamplingCounter mCpuPower = new LongSamplingCounter(mOnBatteryTimeBase);
        LongSamplingCounter[][] mCpuClusterSpeed;

三:相关事件触发(开启或者关闭)时,触发对应时间计数器的方法(打开或者关闭),具体是:

Paste_Image.png

Paste_Image.png

四:耗电结果统计 根据时间计数器算出相应耗电项目的数值,具体是:

Paste_Image.png

具体耗电项目的计算不一样, 比如 cpu会根据 cpu频率 * 单位耗电值 * 时间计数器的时间 算出耗电量 比如 非wifi的数据流量会根据流量值估算耗电量,同样的,wifi情况下,有两种计算方式,一种比较精确,和流量数据无关,一种也是根据流量值来估计耗电量,所以V**类的产品,耗电量就是这么被计算上去的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IDA动态调试-没啥卵用的静态加固

    前几天学习了so加固相关的知识so加固-加密特定section中的内容、ELF中可以被修改又不影响执行的区域,于是自己动手写了一个crackme,自我感觉么么哒...

    用户2930595
  • 使用AndroidStudio调试AOSP源码

    当我们在AOSP中加入了自己的代码,或者当我们阅读源码时,一个迫切的需求就是调试,下面讲述如何利用AndroidStudio调试Java部分的代码。

    用户2930595
  • Android启动过程分析-从按下电源键到第一个用户进程[转载]正文

    对Android最初的启动过程一直没有清晰的认识,看到一篇好文,转载一下: http://blog.jobbole.com/67931/ http://ww...

    用户2930595
  • 给Java字节码加上”翅膀“的JIT编译器

    上面文章在介绍Java的内存模型的时候,提到过由于编译器的优化会导致重排序的问题,其中一个比较重要的点地方就是关于JIT编译器的功能。JIT的英文单词是Just...

    我是攻城师
  • Leetcode: House Robber

    题目: You are a professional robber planning to rob houses along a street. Each ...

    卡尔曼和玻尔兹曼谁曼
  • Linux基础知识第二讲,文件目录命令使用

    linux在敲命令的时候,如果命令没错.我们可以按 Tab键来进行自动补全. 如: 我们有一个目录是 FFile.我们要切换到这个目录 正常: cd F...

    IBinary
  • 强化学习(十九) AlphaGo Zero强化学习原理

        在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用。这里我们在前一节MCTS的基础上,讨论下...

    刘建平Pinard
  • 科技发展|实现3D可视化输煤系统,铸造传统工业发展新高度

    输煤系统作为电厂外围尤为重要的系统,一直为电厂锅炉提供燃料,是电厂能否运行的重要保证。在传统模式中,输煤系统有自己独立的控制室,有且仅有在这个控制室中才能实现对...

    万物皆可联i
  • CodeSmith 创建Ado.Net自定义模版(三)

    CodeSmith 创建Ado.Net自定义模版(三) 接上一篇:   CodeSmith 创建Ado.Net自定义模版(二) 写数据访问层模版:Step3_D...

    Porschev
  • GRE作文用AI打分,已经20周年了:AI给中国考生的分数,远高于人类打分

    VICE调查了美国的50个州,发现有至少21个州 (包括加州) 的教育系统,已经把AI当成作文打分的主要/第二主要工具,用在标准化考试里。

    用户1737318

扫码关注云+社区

领取腾讯云代金券