BatteryService电池管理
BatteryService负责监听充电状态和电量变化,当电量值或者充电类型改变时,会获取到底层healthd上报的电池状态信息,
并更新到BatteryStatsService中进行统计,同时会将这些值存储到Intent中,
以广播的形式发送到监听了ACTION_BATTERY_CHANGED的组件中,
其他组建可以通过Intent.getExtra()的方式获取到电池信息。
通过获取到的电量信息,上层可以做出低电警告、高温警告等行为
processValuesLocked()
processValuesLocked()是BatteryService中更新电池信息最核心的方法,当healthd从kernel层获取电池信息后,
会上报给BatteryService,BatteryService中通过这个方法进行处理从而完成更新
private void processValuesLocked(boolean force) {
boolean logOutlier = false;
long dischargeDuration = 0;
获取充电类型
mBatteryLevelCritical =
mHealthInfo.batteryStatus != BatteryManager.BATTERY_STATUS_UNKNOWN
&& mHealthInfo.batteryLevel <= mCriticalBatteryLevel;
if (mHealthInfo.chargerAcOnline) {
mPlugType = BatteryManag