diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java index 5d734c682b49..b9c7a4b411ef 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java @@ -89,14 +89,18 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC @Override public void addStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) { - mChangeCallbacks.add(cb); + synchronized (mChangeCallbacks) { + mChangeCallbacks.add(cb); + } cb.onBatteryLevelChanged(mLevel, mPluggedIn, mCharging); cb.onPowerSaveChanged(mPowerSave); } @Override public void removeStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) { - mChangeCallbacks.remove(cb); + synchronized (mChangeCallbacks) { + mChangeCallbacks.remove(cb); + } } @Override @@ -171,16 +175,20 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC } protected void fireBatteryLevelChanged() { - final int N = mChangeCallbacks.size(); - for (int i = 0; i < N; i++) { - mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging); + synchronized (mChangeCallbacks) { + final int N = mChangeCallbacks.size(); + for (int i = 0; i < N; i++) { + mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging); + } } } private void firePowerSaveChanged() { - final int N = mChangeCallbacks.size(); - for (int i = 0; i < N; i++) { - mChangeCallbacks.get(i).onPowerSaveChanged(mPowerSave); + synchronized (mChangeCallbacks) { + final int N = mChangeCallbacks.size(); + for (int i = 0; i < N; i++) { + mChangeCallbacks.get(i).onPowerSaveChanged(mPowerSave); + } } } |