diff options
| author | 2020-02-11 12:16:07 +0000 | |
|---|---|---|
| committer | 2020-02-11 12:16:07 +0000 | |
| commit | 784a7ad7e319f9edb10d9fbb0ade95c1b0c685d9 (patch) | |
| tree | 116bbba57b6a4d837a7b5ce9cdccf6d963ea94fd | |
| parent | 663a13b1347d8452ef6dffa3a4e6b72b04dbeca3 (diff) | |
| parent | 12129525bf1bf026319ebabfe8e5d02b9320ac4f (diff) | |
Merge "Fix ConcurrentModificationException on LocalBluetoothProfileManager"
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java index c72efb7eec83..35bbbc0e8b39 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java @@ -48,6 +48,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; /** @@ -232,7 +233,7 @@ public class LocalBluetoothProfileManager { } private final Collection<ServiceListener> mServiceListeners = - new ArrayList<ServiceListener>(); + new CopyOnWriteArrayList<ServiceListener>(); private void addProfile(LocalBluetoothProfile profile, String profileName, String stateChangedAction) { @@ -361,14 +362,18 @@ public class LocalBluetoothProfileManager { // not synchronized: use only from UI thread! (TODO: verify) void callServiceConnectedListeners() { - for (ServiceListener l : mServiceListeners) { + final Collection<ServiceListener> listeners = new ArrayList<>(mServiceListeners); + + for (ServiceListener l : listeners) { l.onServiceConnected(); } } // not synchronized: use only from UI thread! (TODO: verify) void callServiceDisconnectedListeners() { - for (ServiceListener listener : mServiceListeners) { + final Collection<ServiceListener> listeners = new ArrayList<>(mServiceListeners); + + for (ServiceListener listener : listeners) { listener.onServiceDisconnected(); } } |