diff options
| -rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index deff7ef7d39a..96935851ba8a 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -1557,10 +1557,11 @@ class StorageManagerService extends IStorageManager.Stub } private void start() { - connect(); + connectStoraged(); + connectVold(); } - private void connect() { + private void connectStoraged() { IBinder binder = ServiceManager.getService("storaged"); if (binder != null) { try { @@ -1569,7 +1570,7 @@ class StorageManagerService extends IStorageManager.Stub public void binderDied() { Slog.w(TAG, "storaged died; reconnecting"); mStoraged = null; - connect(); + connectStoraged(); } }, 0); } catch (RemoteException e) { @@ -1583,7 +1584,17 @@ class StorageManagerService extends IStorageManager.Stub Slog.w(TAG, "storaged not found; trying again"); } - binder = ServiceManager.getService("vold"); + if (mStoraged == null) { + BackgroundThread.getHandler().postDelayed(() -> { + connectStoraged(); + }, DateUtils.SECOND_IN_MILLIS); + } else { + onDaemonConnected(); + } + } + + private void connectVold() { + IBinder binder = ServiceManager.getService("vold"); if (binder != null) { try { binder.linkToDeath(new DeathRecipient() { @@ -1591,7 +1602,7 @@ class StorageManagerService extends IStorageManager.Stub public void binderDied() { Slog.w(TAG, "vold died; reconnecting"); mVold = null; - connect(); + connectVold(); } }, 0); } catch (RemoteException e) { @@ -1611,9 +1622,9 @@ class StorageManagerService extends IStorageManager.Stub Slog.w(TAG, "vold not found; trying again"); } - if (mStoraged == null || mVold == null) { + if (mVold == null) { BackgroundThread.getHandler().postDelayed(() -> { - connect(); + connectVold(); }, DateUtils.SECOND_IN_MILLIS); } else { onDaemonConnected(); |