summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/os/storage/StorageManager.java12
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 {