Additional callback on binder's death.

Bug: 180970738
Fixes: 180970738
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest
Change-Id: I1f0ce57a6dd0c3da847c0c858d9243fea7aa2a1f
This commit is contained in:
Alex Buynytskyy
2021-02-23 19:55:51 -08:00
parent aa88510bc4
commit 5e357b09c4

View File

@@ -171,7 +171,7 @@ public class DataLoaderManagerService extends SystemService {
}
}
private class DataLoaderServiceConnection implements ServiceConnection {
private class DataLoaderServiceConnection implements ServiceConnection, IBinder.DeathRecipient {
final int mId;
final IDataLoaderStatusListener mListener;
IDataLoader mDataLoader;
@@ -194,6 +194,13 @@ public class DataLoaderManagerService extends SystemService {
mContext.unbindService(this);
return;
}
try {
service.linkToDeath(this, /*flags=*/0);
} catch (RemoteException e) {
Slog.e(TAG, "Failed to link to DataLoader's death: " + mId, e);
onBindingDied(className);
return;
}
callListener(IDataLoaderStatusListener.DATA_LOADER_BOUND);
}
@@ -218,6 +225,13 @@ public class DataLoaderManagerService extends SystemService {
destroy();
}
@Override
public void binderDied() {
Slog.i(TAG, "DataLoader " + mId + " died");
callListener(IDataLoaderStatusListener.DATA_LOADER_DESTROYED);
destroy();
}
IDataLoader getDataLoader() {
return mDataLoader;
}