Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1901a5b4 authored by Robert Benea's avatar Robert Benea
Browse files

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
parent 695ab88f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1842,7 +1842,7 @@ Landroid/os/ServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder
Landroid/os/ServiceManager;->getIServiceManager()Landroid/os/IServiceManager;
Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
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/ServiceManagerNative;->asInterface(Landroid/os/IBinder;)Landroid/os/IServiceManager;
Landroid/os/SharedMemory;->getFd()I
+6 −5
Original line number Diff line number Diff line
@@ -141,6 +141,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.euicc.EuiccCardManager;
import android.telephony.euicc.EuiccManager;
import android.util.ArrayMap;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
@@ -162,7 +163,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}.
@@ -173,10 +174,10 @@ final class SystemServiceRegistry {

    // Service registry information.
    // This information is never changed once static initialization has completed.
    private static final HashMap<Class<?>, String> SYSTEM_SERVICE_NAMES =
            new HashMap<Class<?>, String>();
    private static final HashMap<String, ServiceFetcher<?>> SYSTEM_SERVICE_FETCHERS =
            new HashMap<String, ServiceFetcher<?>>();
    private static final Map<Class<?>, String> SYSTEM_SERVICE_NAMES =
            new ArrayMap<Class<?>, String>();
    private static final Map<String, ServiceFetcher<?>> SYSTEM_SERVICE_FETCHERS =
            new ArrayMap<String, ServiceFetcher<?>>();
    private static int sServiceCacheSize;

    // Not instantiable.
+2 −2
Original line number Diff line number Diff line
@@ -16,13 +16,13 @@

package android.os;

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 */
@@ -35,7 +35,7 @@ public final class ServiceManager {
    /**
     * 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.