summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/res/ThemedResourceCache.java13
1 files changed, 5 insertions, 8 deletions
diff --git a/core/java/android/content/res/ThemedResourceCache.java b/core/java/android/content/res/ThemedResourceCache.java
index 3270944ce7e3..e0701b90d6fa 100644
--- a/core/java/android/content/res/ThemedResourceCache.java
+++ b/core/java/android/content/res/ThemedResourceCache.java
@@ -22,10 +22,10 @@ import android.compat.annotation.UnsupportedAppUsage;
import android.content.pm.ActivityInfo.Config;
import android.content.res.Resources.Theme;
import android.content.res.Resources.ThemeKey;
-import android.util.ArrayMap;
import android.util.LongSparseArray;
import java.lang.ref.WeakReference;
+import java.util.HashMap;
/**
* Data structure used for caching data against themes.
@@ -34,7 +34,7 @@ import java.lang.ref.WeakReference;
*/
abstract class ThemedResourceCache<T> {
@UnsupportedAppUsage
- private ArrayMap<ThemeKey, LongSparseArray<WeakReference<T>>> mThemedEntries;
+ private HashMap<ThemeKey, LongSparseArray<WeakReference<T>>> mThemedEntries;
private LongSparseArray<WeakReference<T>> mUnthemedEntries;
private LongSparseArray<WeakReference<T>> mNullThemedEntries;
@@ -154,7 +154,7 @@ abstract class ThemedResourceCache<T> {
if (mThemedEntries == null) {
if (create) {
- mThemedEntries = new ArrayMap<>(1);
+ mThemedEntries = new HashMap<>(1);
} else {
return null;
}
@@ -199,11 +199,8 @@ abstract class ThemedResourceCache<T> {
private boolean prune(@Config int configChanges) {
synchronized (this) {
if (mThemedEntries != null) {
- for (int i = mThemedEntries.size() - 1; i >= 0; i--) {
- if (pruneEntriesLocked(mThemedEntries.valueAt(i), configChanges)) {
- mThemedEntries.removeAt(i);
- }
- }
+ mThemedEntries.entrySet()
+ .removeIf(entry -> pruneEntriesLocked(entry.getValue(), configChanges));
}
pruneEntriesLocked(mNullThemedEntries, configChanges);