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
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index cc95642..904b2e9 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -20,22 +20,19 @@
 
 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 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 @@
                 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);
                 }
             }
         }