From ea689abbcd16363fccde246b61b4e5ebf896902a Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Wed, 1 Jul 2020 17:18:29 +0800 Subject: Fix the exception of accessing an ArrayMap - ArrayMap is not thread-safe. - When accessing the map across threads at the same time, the map may throw a ConcurrentModificationException. - Convert the map to a synchronizedMap to avoid the exception. Fixes: 159813482 Test: robotest Change-Id: I3b8bdd435c7c546acf736fa8aafd2ceaed94d081 --- src/com/android/settings/slices/SliceBackgroundWorker.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/com/android/settings') diff --git a/src/com/android/settings/slices/SliceBackgroundWorker.java b/src/com/android/settings/slices/SliceBackgroundWorker.java index 6eb154e955..2b029999ef 100644 --- a/src/com/android/settings/slices/SliceBackgroundWorker.java +++ b/src/com/android/settings/slices/SliceBackgroundWorker.java @@ -33,6 +33,7 @@ import java.io.Closeable; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -190,7 +191,8 @@ public abstract class SliceBackgroundWorker implements Closeable { private static NotifySliceChangeHandler sHandler; - private final Map mLastUpdateTimeLookup = new ArrayMap<>(); + private final Map mLastUpdateTimeLookup = Collections.synchronizedMap( + new ArrayMap<>()); private static NotifySliceChangeHandler getInstance() { if (sHandler == null) { -- cgit v1.2.3