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
Change-Id: I092c6816afba77fde4195c68a211804d4a561b77
This commit is contained in:
Robert Benea
2018-05-15 16:36:07 -07:00
parent 695ab88fe2
commit 1901a5b483
3 changed files with 9 additions and 8 deletions

View File

@@ -1842,7 +1842,7 @@ Landroid/os/ServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder
Landroid/os/ServiceManager;->getIServiceManager()Landroid/os/IServiceManager; Landroid/os/ServiceManager;->getIServiceManager()Landroid/os/IServiceManager;
Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
Landroid/os/ServiceManager;->listServices()[Ljava/lang/String; Landroid/os/ServiceManager;->listServices()[Ljava/lang/String;
Landroid/os/ServiceManager;->sCache:Ljava/util/HashMap; Landroid/os/ServiceManager;->sCache:Ljava/util/Map;
Landroid/os/ServiceManager;->sServiceManager:Landroid/os/IServiceManager; Landroid/os/ServiceManager;->sServiceManager:Landroid/os/IServiceManager;
Landroid/os/ServiceManagerNative;->asInterface(Landroid/os/IBinder;)Landroid/os/IServiceManager; Landroid/os/ServiceManagerNative;->asInterface(Landroid/os/IBinder;)Landroid/os/IServiceManager;
Landroid/os/SharedMemory;->getFd()I Landroid/os/SharedMemory;->getFd()I

View File

@@ -141,6 +141,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.telephony.euicc.EuiccCardManager; import android.telephony.euicc.EuiccCardManager;
import android.telephony.euicc.EuiccManager; import android.telephony.euicc.EuiccManager;
import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -162,7 +163,7 @@ import com.android.internal.net.INetworkWatchlistManager;
import com.android.internal.os.IDropBoxManagerService; import com.android.internal.os.IDropBoxManagerService;
import com.android.internal.policy.PhoneLayoutInflater; 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}. * Manages all of the system services that can be returned by {@link Context#getSystemService}.
@@ -173,10 +174,10 @@ final class SystemServiceRegistry {
// Service registry information. // Service registry information.
// This information is never changed once static initialization has completed. // This information is never changed once static initialization has completed.
private static final HashMap<Class<?>, String> SYSTEM_SERVICE_NAMES = private static final Map<Class<?>, String> SYSTEM_SERVICE_NAMES =
new HashMap<Class<?>, String>(); new ArrayMap<Class<?>, String>();
private static final HashMap<String, ServiceFetcher<?>> SYSTEM_SERVICE_FETCHERS = private static final Map<String, ServiceFetcher<?>> SYSTEM_SERVICE_FETCHERS =
new HashMap<String, ServiceFetcher<?>>(); new ArrayMap<String, ServiceFetcher<?>>();
private static int sServiceCacheSize; private static int sServiceCacheSize;
// Not instantiable. // Not instantiable.

View File

@@ -16,13 +16,13 @@
package android.os; package android.os;
import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
import com.android.internal.os.BinderInternal; import com.android.internal.os.BinderInternal;
import com.android.internal.util.StatLogger; import com.android.internal.util.StatLogger;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** @hide */ /** @hide */
@@ -35,7 +35,7 @@ public final class ServiceManager {
/** /**
* Cache for the "well known" services, such as WM and AM. * Cache for the "well known" services, such as WM and AM.
*/ */
private static HashMap<String, IBinder> sCache = new HashMap<String, IBinder>(); private static Map<String, IBinder> sCache = new ArrayMap<String, IBinder>();
/** /**
* We do the "slow log" at most once every this interval. * We do the "slow log" at most once every this interval.