diff options
author | ellen,yang <ellen.yang@unisoc.com> | 2023-08-24 17:15:27 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-08-24 17:15:27 +0000 |
commit | bdbc6425d3496f209caca479d7cb22ece96be93d (patch) | |
tree | cdfdec510b7b431b4dccfafe6461a844a58577b9 | |
parent | fc601adb246cfd4aaf0c01ce3eb7c66d85ffb0c3 (diff) | |
parent | 4a1319f75b49e33b8db107e6c77eb8391b279e8f (diff) | |
download | connectedappssdk-bdbc6425d3496f209caca479d7cb22ece96be93d.tar.gz |
modify the concurrentmodificationexception in the senfers in CrossprofileSenders.java am: 2067f2a646 am: 6fc6d5a28f am: 0936338eb7 am: 4a1319f75b
Original change: https://android-review.googlesource.com/c/platform/external/connectedappssdk/+/2714934
Change-Id: Ibc650cf07922a651040af8c8ad3de911bdf90b8f
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.java | 10 |
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); + } } } }; |