Merge "Replace HashMap with ArrayMap for better performance" into main
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
index 1a0ca4e..4b1f645 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.os.BadParcelableException;
 import android.os.Bundle;
+import android.util.ArrayMap;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -35,7 +36,6 @@
 import com.android.settings.widget.CardPreference;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -65,7 +65,7 @@
 
     public BatteryTipPreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
-        mBatteryTipMap = new HashMap<>();
+        mBatteryTipMap = new ArrayMap<>();
         mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
         mNeedUpdate = true;
     }
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java
index 55ac3fa..cba614b 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java
@@ -18,9 +18,9 @@
 
 import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.content.res.Resources;
 import android.icu.text.ListFormatter;
 import android.os.Parcel;
+import android.util.ArrayMap;
 
 import androidx.annotation.VisibleForTesting;
 
@@ -31,7 +31,6 @@
 import com.android.settingslib.utils.StringUtil;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -66,7 +65,7 @@
         final CharSequence appLabel = num > 0 ? Utils.getApplicationLabel(context,
                 mRestrictAppList.get(0).packageName) : "";
 
-        Map<String, Object> arguments = new HashMap<>();
+        Map<String, Object> arguments = new ArrayMap<>();
         arguments.put("count", num);
         arguments.put("label", appLabel);
         return mState == StateType.HANDLED
@@ -84,7 +83,7 @@
         final int resId = mState == StateType.HANDLED
                 ? R.string.battery_tip_restrict_handled_summary
                 : R.string.battery_tip_restrict_summary;
-        Map<String, Object> arguments = new HashMap<>();
+        Map<String, Object> arguments = new ArrayMap<>();
         arguments.put("count", num);
         arguments.put("label", appLabel);
         return StringUtil.getIcuPluralsString(context, arguments, resId);
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
index a7deaf9..b186c60 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
@@ -23,6 +23,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.text.TextUtils;
+import android.util.ArrayMap;
 import android.util.Log;
 import android.util.Pair;
 
@@ -33,7 +34,6 @@
 import com.android.settingslib.utils.StringUtil;
 
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 
@@ -43,14 +43,14 @@
 
     static Locale sCurrentLocale = null;
     // Caches app label and icon to improve loading performance.
-    static final Map<String, BatteryEntry.NameAndIcon> sResourceCache = new HashMap<>();
+    static final Map<String, BatteryEntry.NameAndIcon> sResourceCache = new ArrayMap<>();
 
     // Caches package name and uid to improve loading performance.
-    static final Map<String, Integer> sPackageNameAndUidCache = new HashMap<>();
+    static final Map<String, Integer> sPackageNameAndUidCache = new ArrayMap<>();
 
     // Whether a specific item is valid to launch restriction page?
     @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
-    static final Map<String, Boolean> sValidForRestriction = new HashMap<>();
+    static final Map<String, Boolean> sValidForRestriction = new ArrayMap<>();
 
     /** A comparator for {@link BatteryDiffEntry} based on the sorting key. */
     static final Comparator<BatteryDiffEntry> COMPARATOR =
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
index 506607c..5d87302 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
@@ -33,6 +33,7 @@
 import android.os.UserBatteryConsumer;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.ArrayMap;
 import android.util.DebugUtils;
 import android.util.Log;
 
@@ -41,7 +42,6 @@
 import com.android.settingslib.Utils;
 
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.Locale;
 
 /**
@@ -90,7 +90,7 @@
                     BatteryConsumer.POWER_COMPONENT_ANY, BatteryConsumer.PROCESS_STATE_CACHED),
     };
 
-    static final HashMap<String, UidToDetail> sUidCache = new HashMap<>();
+    static final ArrayMap<String, UidToDetail> sUidCache = new ArrayMap<>();
 
     static Locale sCurrentLocale = null;
 
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
index 7fedec7..983524f 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
@@ -23,6 +23,7 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.text.TextUtils;
+import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Log;
 import android.view.View;
@@ -50,7 +51,6 @@
 import com.android.settingslib.widget.FooterPreference;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -75,7 +75,7 @@
     private final Handler mHandler = new Handler(Looper.getMainLooper());
 
     @VisibleForTesting
-    final Map<String, Preference> mPreferenceCache = new HashMap<>();
+    final Map<String, Preference> mPreferenceCache = new ArrayMap<>();
 
     private int mSpinnerPosition;
     private String mSlotTimestamp;
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
index c298afa..99cf354 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
@@ -34,7 +34,6 @@
 
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -293,7 +292,7 @@
                     Log.d(TAG, "there is no work profile");
                 }
 
-                final Map<Long, UsageEvents> usageEventsMap = new HashMap<>();
+                final Map<Long, UsageEvents> usageEventsMap = new ArrayMap<>();
                 usageEventsMap.put(Long.valueOf(currentUserId), usageEventsForCurrentUser);
                 if (usageEventsForWorkProfile != null) {
                     Log.d(TAG, "usageEventsForWorkProfile is null");