OSDN Git Service

Use thread safe set for adapter set
authorJay Shrauner <shrauner@google.com>
Fri, 8 Aug 2014 23:31:48 +0000 (16:31 -0700)
committerJay Shrauner <shrauner@google.com>
Sat, 9 Aug 2014 00:08:53 +0000 (17:08 -0700)
Switch from HashSet to set backed by a ConcurrentHashMap to prevent
ConcurrentModificationExceptions.

Bug:16898286
Change-Id: I5d94b403469e98c5f5431fc1d0ad020985100cfd

telecomm/java/android/telecomm/ConnectionServiceAdapter.java

index 6499ec4..9fd3a97 100644 (file)
@@ -29,10 +29,11 @@ import com.android.internal.telecomm.IVideoCallProvider;
 import com.android.internal.telecomm.RemoteServiceCallback;
 
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Provides methods for IConnectionService implementations to interact with the system phone app.
@@ -40,7 +41,8 @@ import java.util.Set;
  * @hide
  */
 final class ConnectionServiceAdapter implements DeathRecipient {
-    private final Set<IConnectionServiceAdapter> mAdapters = new HashSet<>();
+    private final Set<IConnectionServiceAdapter> mAdapters = Collections.newSetFromMap(
+            new ConcurrentHashMap<IConnectionServiceAdapter, Boolean>(2));
 
     ConnectionServiceAdapter() {
     }