summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-02-11 12:16:07 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-02-11 12:16:07 +0000
commit784a7ad7e319f9edb10d9fbb0ade95c1b0c685d9 (patch)
tree116bbba57b6a4d837a7b5ce9cdccf6d963ea94fd
parent663a13b1347d8452ef6dffa3a4e6b72b04dbeca3 (diff)
parent12129525bf1bf026319ebabfe8e5d02b9320ac4f (diff)
Merge "Fix ConcurrentModificationException on LocalBluetoothProfileManager"
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java11
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();
}
}