aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorellen,yang <ellen.yang@unisoc.com>2023-08-24 18:06:06 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-08-24 18:06:06 +0000
commit55bbfc97069209a6a8e5c874041e5e8b5f9f944f (patch)
treecdfdec510b7b431b4dccfafe6461a844a58577b9
parent65f0a41421cece1376444cbfbb929f1f8e01ad93 (diff)
parentbdbc6425d3496f209caca479d7cb22ece96be93d (diff)
downloadconnectedappssdk-55bbfc97069209a6a8e5c874041e5e8b5f9f944f.tar.gz
modify the concurrentmodificationexception in the senfers in CrossprofileSenders.java am: 2067f2a646 am: 6fc6d5a28f am: 0936338eb7 am: 4a1319f75b am: bdbc6425d3
Original change: https://android-review.googlesource.com/c/platform/external/connectedappssdk/+/2714934 Change-Id: I4eda4cbc57766f7b476d6f49bd895f3498568e11 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java b/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java
index 0432696..91aaadc 100644
--- a/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java
+++ b/sdk/src/main/java/com/google/android/enterprise/connectedapps/CrossProfileSender.java
@@ -49,11 +49,13 @@ import com.google.android.enterprise.connectedapps.internal.CrossProfileBundleCa
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.WeakHashMap;
+import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.CountDownLatch;
@@ -283,13 +285,15 @@ public final class CrossProfileSender {
// This is synchronized which isn't massively performant but it only gets accessed once straight
// after creating a Sender, and once each time availability changes
private static final Set<CrossProfileSender> senders =
- synchronizedSet(newSetFromMap(new WeakHashMap<>()));
+ synchronizedSet(newSetFromMap(new WeakHashMap<>()));
private static final BroadcastReceiver profileAvailabilityReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- for (CrossProfileSender sender : senders) {
- sender.scheduledExecutorService.execute(sender::checkAvailability);
+ synchronized (senders) {
+ for (CrossProfileSender sender : senders) {
+ sender.scheduledExecutorService.execute(sender::checkAvailability);
+ }
}
}
};