diff options
| author | 2016-07-12 13:34:12 -0400 | |
|---|---|---|
| committer | 2016-07-12 13:34:12 -0400 | |
| commit | 324a28fc64b938d9b79d4e029d3dbd438ad8e9a9 (patch) | |
| tree | 778e2085d82125cba67db96852f6222a707a3ed2 | |
| parent | 0171a6ef8b45e83eabb3843a544a59f6fa581db9 (diff) | |
SysUI: Protect against crash in BatteryController
Change-Id: I850177b961b59b342dde4dbf67c018ac68a42960
Fixes: 30033957
| -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); + } } } |