Android功耗评测系列之——软件评测方案原理
软件评测方案也有很多种,但核心原理都是同一个。
软件评测方案中,所有Android功耗的统计都是通过代码进行估算,没有任何实体电路和硬件设备参与统计汇报。这个配置文件存储在Android设备的以下路径中:
/frameworks/base/core/res/res/xml/power_profile.xml
(不同的厂商定制ROM中,此文件的路径可能会稍有不同)
配置文件内容节选示例如下:
文件中会详细设定手机中的每个部件在不同工况中的功耗单位值。所以,软件评测准确与否,与该文件息息相关。某些品牌的手机由于造假吹牛成风,故不可用于功耗评测。嗯,你知道我说的是谁。
在电源配置文件中,功耗表示额定电压下的电流消耗量,单位为毫安 (mA),也可用微安(uA) 表示(分数值)。该值应代表电池上消耗的电流,而非与电池消耗的电流不对应的相应电源轨的值。
例如,显示屏电源配置文件列出了当显示屏开启状态下保持最低亮度和最高亮度时需消耗的电流量 (mA)。为了确定显示屏常亮时所需的电源成本(即由显示屏组件所消耗的电池量),框架会跟踪在各个亮度级别下维持的时间,然后将这些时间间隔乘以通过插值算法计算的显示亮度成本。
软件评测的计算方法和原理
Android系统为了进行电源管理,设计了PowerManagement框架,其中包含BatteryState服务。BatteryStats 会不断地收集信息,并存储这些信息以便在重新启动后继续使用。该服务不会直接跟踪电池中消耗的电流,而是通过收集计时信息来估算不同组件所消耗的电量。
该框架使用以下方法收集统计信息:
· 推送:服务察觉到组件状态发生变化后,会将状态变化推送到 BatteryStats 服务中。
· 拉取:对于应用使用的 CPU 等组件,框架会在转换点(例如启动活动或停止活动)自动拉取数据以截取快照。
资源消耗与使用资源的应用相关。当多个应用同时使用某项资源(例如防止系统挂起的唤醒锁)时,框架会将资源消耗量分摊到这些应用上,但不一定会均分。
为了避免由于系统关闭事件而丢失电池使用统计信息(这些统计信息可能表明存在电池功耗问题,比如由于电池电量耗尽而关闭),框架会大约每 30 分钟发送一次统计信息。
要确定电源配置文件的有关数值,请使用测量设备耗电量的硬件,并执行需要信息的各种操作。测量执行这些操作时的电量使用情况并计算各项值(在适当情况下与其他基准操作的电量消耗做对比所得的差异值)。
电源配置文件的目的在于适当地估算电量消耗情况,电源配置文件的有关数值以电流(安培)表示。Android 框架用电流乘以子系统处于激活状态的时间,并计算毫安时值,然后将此值用于评估应用/子系统消耗的电池电量。
原理似乎不太复杂,那实际中到底是咋算的呢?
(以下内容摘自网络,侵删。)
在BatteryStatsHelper.java 中,有这么一个方法:
processAppUsage()方法中,一个应用的总功耗在这里体现出来了:
· cpu
· Wakelock(保持唤醒锁)
· 数据天线(2G/3G/4G)
· WIFI
· 蓝牙
· 传感器
· 相机
· 闪光灯
这些数据,将决定着你的应用在耗电排行榜中的位置,以及是否给予用户警告高耗电。这些警告对于应用来说可能是致命的,用户可能因此而卸载应用。
应用总功耗是上述八个统计值的和。这八个统计器同继承自 PowerCalculator.java
具体来说,这八个耗电计算器的算法分别如下:
Android功耗评测系列之——软件评测方案原理的更多相关文章
- android黑科技系列——微信抢红包插件原理解析和开发实现
一.前言 自从几年前微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导 ...
- Android网络编程系列之HTTP协议原理总结
前言 作为搞移动开发的我们,免不了与网络交互打交道.虽然市面上很多开源库都封装的比较到位,我们实现网络访问也轻车熟路.但还是十分有必要简要了解一下其中的原理,以便做到得心应手,也是通往高级开发工程师甚 ...
- 【转】Android LCD(二):LCD常用接口原理篇
关键词:android LCD TFT TTL(RGB) LVDS EDP MIPI TTL-LVDS TTL-EDP 平台信息:内核:linux2.6/linux3.0系统:android/ ...
- Kylin系列之二:原理介绍
Kylin系列之二:原理介绍 2018年4月15日 15:52 因何而生 Kylin和hive的区别 1. hive主要是离线分析平台,适用于已经有成熟的报表体系,每天只要定时运行即可. 2. Kyl ...
- 【转】Android总结篇系列:Activity启动模式(lauchMode)
[转]Android总结篇系列:Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些 ...
- 【转】Android总结篇系列:Activity生命周期
[转]Android总结篇系列:Activity生命周期 Android官方文档和其他不少资料都对Activity生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity ...
- Android按键添加和处理的方案
Android按键添加和处理的方案 版本号 说明 作者 日期 1.0 Android按键添加和处理的方案 Sky Wang 2013/06/18 需求:Android机器上有个W ...
- Android性能优化系列之App启动优化
Android性能优化系列之布局优化 Android性能优化系列之内存优化 Android性能优化系列之apk瘦身 应用的启动速度缓慢是我们在开发过程中常常会遇到的问题,比方启动缓慢导致的黑屏.白屏问 ...
- Android之Activity系列总结(三)--Activity的四种启动模式
一.返回栈简介 任务是指在执行特定作业时与用户交互的一系列 Activity. 这些 Activity 按照各自的打开顺序排列在堆栈(即返回栈,也叫任务栈)中. 首先介绍一下任务栈: (1)程序打开时 ...
随机推荐
- manacher 和 扩展KMP
manacher 和 扩展KMP 事实上,这两个东西是一样的. 考虑 manacher 的过程 我们实时维护最远扩展的位置 \(mx\) 以及这个回文串的回文中心 \(l\) ,那么显然当然位置如果没 ...
- 【CF1257A】Two Rival Students【思维】
题意:给你n个人和两个尖子生a,b,你可以操作k次,每次操作交换相邻两个人的位置,求问操作k次以内使得ab两人距离最远是多少 题解:贪心尽可能的将两人往两边移动,总结一下就是min(n-1,|a-b| ...
- AcWing 314. 低买 (线性DP)打卡
题目:https://www.acwing.com/problem/content/316/ 题意:求一个最长单调递减子序列,然后并且求方案数,如果序列完全一样就不要了 思路:我们肯定时修改LIS,我 ...
- Critical Links
UVA 796 Critical Links http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82833#overview 题目大意:给你一 ...
- 3 August
P1013 进制位 结论:加法必为 \(n-1\) 进制:\({(n-1)}^1\) 位必为数字 1:\(0+0=0\). 模拟.字符串. #include <cstdio> #inclu ...
- sublime常用基础插件合集
插件介绍 Package Control 功能:安装包管理简介:sublime插件控制台,提供添加.删除.禁用.查找插件等功能使用方法:快捷键 Ctrl+Shift+P,输入 install 选中In ...
- 术语-Portal:Portal(Web站点)
ylbtech-术语-Portal:Portal(Web站点) Portal作为网关服务于因特网的一种WEB站点.Portal是链路.内容和为用户可能找到的感兴趣的信息(如新闻.天气.娱乐.商业站点. ...
- 114、TensorFlow设备放置
# creates a variable named v and places it on the second GPU device import tensorflow as tf #with tf ...
- 【玩转SpringBoot】异步任务执行与其线程池配置
同步代码写起来简单,但就是怕遇到耗时操作,会影响效率和吞吐量. 此时异步代码才是王者,但涉及多线程和线程池,以及异步结果的获取,写起来颇为麻烦. 不过在遇到SpringBoot异步任务时,这个问题就不 ...
- WIN7 下的 filemon 版本
http://blog.sina.com.cn/s/blog_594398e80100tx1q.html WIN7 下的 filemon 版本 (2011-09-26 22:26:12) 标签: fi ...


