diff options
| -rw-r--r-- | core/java/android/os/storage/StorageManager.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index fbf7b266330b..485bbd105603 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 { |