Merge "Fix StorageManagerService linkToDeath more than one time when vold/storaged died."
This commit is contained in:
@@ -1452,10 +1452,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 {
|
||||
@@ -1464,7 +1465,7 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
public void binderDied() {
|
||||
Slog.w(TAG, "storaged died; reconnecting");
|
||||
mStoraged = null;
|
||||
connect();
|
||||
connectStoraged();
|
||||
}
|
||||
}, 0);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1478,7 +1479,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() {
|
||||
@@ -1486,7 +1497,7 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
public void binderDied() {
|
||||
Slog.w(TAG, "vold died; reconnecting");
|
||||
mVold = null;
|
||||
connect();
|
||||
connectVold();
|
||||
}
|
||||
}, 0);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1506,9 +1517,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();
|
||||
|
||||
Reference in New Issue
Block a user