From 360b2c4434c0bbbb2a56366ae0ac754256bc5407 Mon Sep 17 00:00:00 2001 From: Robert Benea Date: Tue, 15 May 2018 16:36:07 -0700 Subject: [PATCH] Replace HashMap with ArrayMap for services The number of services is pretty limited (100ish), use the more memory efficient Map. Test: tested on android go Merged-In: I092c6816afba77fde4195c68a211804d4a561b77 Change-Id: I092c6816afba77fde4195c68a211804d4a561b77 --- core/java/android/app/SystemServiceRegistry.java | 11 ++++++----- core/java/android/os/ServiceManager.java | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index f6b7eefc7864e..b19cd1c1ffb33 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -150,6 +150,7 @@ import android.telephony.TelephonyManager; import android.telephony.euicc.EuiccCardManager; import android.telephony.euicc.EuiccManager; import android.telephony.ims.RcsManager; +import android.util.ArrayMap; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; @@ -171,7 +172,7 @@ import com.android.internal.net.INetworkWatchlistManager; import com.android.internal.os.IDropBoxManagerService; import com.android.internal.policy.PhoneLayoutInflater; -import java.util.HashMap; +import java.util.Map; /** * Manages all of the system services that can be returned by {@link Context#getSystemService}. @@ -182,10 +183,10 @@ final class SystemServiceRegistry { // Service registry information. // This information is never changed once static initialization has completed. - private static final HashMap, String> SYSTEM_SERVICE_NAMES = - new HashMap, String>(); - private static final HashMap> SYSTEM_SERVICE_FETCHERS = - new HashMap>(); + private static final Map, String> SYSTEM_SERVICE_NAMES = + new ArrayMap, String>(); + private static final Map> SYSTEM_SERVICE_FETCHERS = + new ArrayMap>(); private static int sServiceCacheSize; // Not instantiable. diff --git a/core/java/android/os/ServiceManager.java b/core/java/android/os/ServiceManager.java index b2ba92849133a..9a9b0306063b2 100644 --- a/core/java/android/os/ServiceManager.java +++ b/core/java/android/os/ServiceManager.java @@ -17,13 +17,13 @@ package android.os; import android.annotation.UnsupportedAppUsage; +import android.util.ArrayMap; import android.util.Log; import com.android.internal.annotations.GuardedBy; import com.android.internal.os.BinderInternal; import com.android.internal.util.StatLogger; -import java.util.HashMap; import java.util.Map; /** @hide */ @@ -38,7 +38,7 @@ public final class ServiceManager { * Cache for the "well known" services, such as WM and AM. */ @UnsupportedAppUsage - private static HashMap sCache = new HashMap(); + private static Map sCache = new ArrayMap(); /** * We do the "slow log" at most once every this interval.