android 电量消耗检测原理 & 获取程序耗电排行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mzmin521/article/details/51615821
Android电量监控软件 Battery Monitor Widget

用ZDbox这款软件,能测量Android手机内各个应用的耗电情况。

耗电原因:

大部分的电都耗损在网络连接、GPS、传感器上;

1)完全没WiFi 的情况,开启wifi功能进行不断网络连接;

2)GPS 定位要比网络定位耗电;

3)应用程序中不当的使用wakelock()保持持续唤醒; Wakelock Detector 检测此种

问题,

耗电与后台服务的开启有直接的关系;


settings中获取手机电量排行的原理主要是1)通过读取电池记录文件来实现的

主要用到了android.os.BatteryStats这个隐藏类和com.android.internal这特殊的包;

2)读取CPU时间是通过解析/proc/pid/stat这个文件;


Android 电池消耗统计

原理: android 为不同硬件平台提供了相同的电池耗电统计方法和接口,各个平台根

据自身特性填写配置参数文件[power_profile.xml],android 系统根据读到的配置文件

中的值,计算各个项目的耗电量。


功耗参数配置文件:power_profile.xml;

读取配置和计算各项静态平均功耗的类文件:PowerProfile.java
具体提供用电统计策略的系统接口类: BatteryStatsImpl.java
向BatteryStatsImpl 系统接口喂(提供)数据的系统服务: ActivityManagerService等,用于
统计生成各个app的用电情况;
显示电池消耗统计的实例: Setting ->fuelgauge -> PowerUsageSummary

系统级服务耗电 —— uid != 0 , uid == 1000
CPU 占用时间 * 平均CPU功耗
wakelock占用时间 * 平均wakelock功耗
数据传输量 * 数据传输平均功耗
WIFI on 时间 * wifi on 平均功耗
Sensor 使用时间 * sensor平均功耗 [包括GPS 和 其它sensor]
Scren on 时间
POWER_CPU_AWAKE : 关闭屏幕但未待机时平均功耗;
POWER_CPU_IDLE : 待机功耗


具体平台电池耗电统计不准确原因和修改方法:
1)power_profile.xml 配置参数残缺,部分参数与实际值不符合;

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试