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

Commit b2278dc1 authored by Kenny Root's avatar Kenny Root
Browse files

Don't cache return of getService in Environment

There is already a cache of all non-null return values for calls to
getService(), so don't bother caching it in Environment. This caused
some problems when Environment was called too early in the boot process
and getService() returned null.

Change-Id: I66739d01dab7e422f660d26b370ecce110dcc808
parent 8c01a16c
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -20,22 +20,19 @@ import java.io.File;

import android.content.res.Resources;
import android.os.storage.IMountService;
import android.util.Log;

/**
 * Provides access to environment variables.
 */
public class Environment {
    private static final String TAG = "Environment";

    private static final File ROOT_DIRECTORY
            = getDirectory("ANDROID_ROOT", "/system");

    private static final String SYSTEM_PROPERTY_EFS_ENABLED = "persist.security.efs.enabled";

    private static class MountServiceHolder {
        static IMountService mSingleton = IMountService.Stub.asInterface(ServiceManager
                .getService("mount"));
    }

    private static final Object mLock = new Object();

    private volatile static Boolean mIsExternalStorageEmulated = null;
@@ -401,7 +398,9 @@ public class Environment {
     */
    public static String getExternalStorageState() {
        try {
            return MountServiceHolder.mSingleton.getVolumeState(getExternalStorageDirectory()
            IMountService mountService = IMountService.Stub.asInterface(ServiceManager
                    .getService("mount"));
            return mountService.getVolumeState(getExternalStorageDirectory()
                    .toString());
        } catch (Exception rex) {
            return Environment.MEDIA_REMOVED;
@@ -433,12 +432,14 @@ public class Environment {
                if (mIsExternalStorageEmulated == null) {
                    boolean externalStorageEmulated;
                    try {
                        externalStorageEmulated =
                                MountServiceHolder.mSingleton.isExternalStorageEmulated();
                        IMountService mountService = IMountService.Stub.asInterface(ServiceManager
                                .getService("mount"));
                        externalStorageEmulated = mountService.isExternalStorageEmulated();
                        mIsExternalStorageEmulated = Boolean.valueOf(externalStorageEmulated);
                    } catch (Exception e) {
                        externalStorageEmulated = false;
                        Log.e(TAG, "couldn't talk to MountService", e);
                        return false;
                    }
                    mIsExternalStorageEmulated = Boolean.valueOf(externalStorageEmulated);
                }
            }
        }