diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index fbf7b266330b5..485bbd105603b 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -114,6 +114,8 @@ public class StorageManager { /** {@hide} */ public static final int FLAG_INCLUDE_INVISIBLE = 1 << 10; + private static volatile IMountService sMountService = null; + private final Context mContext; private final ContentResolver mResolver; @@ -1064,15 +1066,17 @@ public class StorageManager { /** {@hide} */ public static boolean isUserKeyUnlocked(int userId) { - final IMountService mount = IMountService.Stub - .asInterface(ServiceManager.getService("mount")); - if (mount == null) { + if (sMountService == null) { + sMountService = IMountService.Stub + .asInterface(ServiceManager.getService("mount")); + } + if (sMountService == null) { Slog.w(TAG, "Early during boot, assuming locked"); return false; } final long token = Binder.clearCallingIdentity(); try { - return mount.isUserKeyUnlocked(userId); + return sMountService.isUserKeyUnlocked(userId); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } finally {