Skip to content

Commit fb3809c

Browse files
author
Dianne Hackborn
committed
Fix issue #17705755: Battery stats resets at incorrect times
Revert back to (mostly) KK behavior, fix a problem where we were collecting some data in an inconsistent state. Change-Id: Ida3ca3fb734a9d7d61a90fd5044152e927c59e02
1 parent 38646c1 commit fb3809c

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

core/java/com/android/internal/os/BatteryStatsImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6732,7 +6732,6 @@ void setOnBatteryLocked(final long mSecRealtime, final long mSecUptime, final bo
67326732
Message m = mHandler.obtainMessage(MSG_REPORT_POWER_CHANGE);
67336733
m.arg1 = onBattery ? 1 : 0;
67346734
mHandler.sendMessage(m);
6735-
mOnBattery = mOnBatteryInternal = onBattery;
67366735

67376736
final long uptime = mSecUptime * 1000;
67386737
final long realtime = mSecRealtime * 1000;
@@ -6745,10 +6744,11 @@ void setOnBatteryLocked(final long mSecRealtime, final long mSecUptime, final bo
67456744
boolean reset = false;
67466745
if (!mNoAutoReset && (oldStatus == BatteryManager.BATTERY_STATUS_FULL
67476746
|| level >= 90
6748-
|| getLowDischargeAmountSinceCharge() >= 60)
6749-
|| (getHighDischargeAmountSinceCharge() >= 60
6750-
&& mHistoryBuffer.dataSize() >= MAX_HISTORY_BUFFER)) {
6747+
|| (mDischargeCurrentLevel < 20 && level >= 80)
6748+
|| (getHighDischargeAmountSinceCharge() >= 200
6749+
&& mHistoryBuffer.dataSize() >= MAX_HISTORY_BUFFER))) {
67516750
Slog.i(TAG, "Resetting battery stats: level=" + level + " status=" + oldStatus
6751+
+ " dischargeLevel=" + mDischargeCurrentLevel
67526752
+ " lowAmount=" + getLowDischargeAmountSinceCharge()
67536753
+ " highAmount=" + getHighDischargeAmountSinceCharge());
67546754
// Before we write, collect a snapshot of the final aggregated
@@ -6785,6 +6785,7 @@ void setOnBatteryLocked(final long mSecRealtime, final long mSecUptime, final bo
67856785
reset = true;
67866786
mNumDischargeStepDurations = 0;
67876787
}
6788+
mOnBattery = mOnBatteryInternal = onBattery;
67886789
mLastDischargeStepLevel = level;
67896790
mMinDischargeStepLevel = level;
67906791
mLastDischargeStepTime = -1;
@@ -6812,6 +6813,7 @@ void setOnBatteryLocked(final long mSecRealtime, final long mSecUptime, final bo
68126813
mDischargeAmountScreenOff = 0;
68136814
updateTimeBasesLocked(true, !screenOn, uptime, realtime);
68146815
} else {
6816+
mOnBattery = mOnBatteryInternal = onBattery;
68156817
pullPendingStateUpdatesLocked();
68166818
mHistoryCur.batteryLevel = (byte)level;
68176819
mHistoryCur.states |= HistoryItem.STATE_BATTERY_PLUGGED_FLAG;

0 commit comments

Comments
 (0)