Fixes the double scheduling of rebind attempts on process death.
Test: Tested on seahawk by killing a bound service repeatedly.
Bug: 205872134
Change-Id: Idec5f119c889099bdd393a79add6737aa7f3c27f
Merged-In: Idec5f119c889099bdd393a79add6737aa7f3c27f
diff --git a/service/src/com/android/car/pm/VendorServiceController.java b/service/src/com/android/car/pm/VendorServiceController.java
index 0575034..e67ea91 100644
--- a/service/src/com/android/car/pm/VendorServiceController.java
+++ b/service/src/com/android/car/pm/VendorServiceController.java
@@ -354,6 +354,9 @@
@Override
public void onBindingDied(ComponentName name) {
mBound = false;
+ if (DBG) {
+ Slog.d(TAG, "onBindingDied, name: " + name);
+ }
tryToRebind();
}
@@ -362,6 +365,14 @@
return;
}
+ if (mFailureHandler.hasMessages(MSG_REBIND)) {
+ if (DBG) {
+ Slog.d(TAG, "Rebind already scheduled for "
+ + mVendorServiceInfo.toShortString());
+ }
+ return;
+ }
+
if (UserHandle.of(ActivityManager.getCurrentUser()).equals(mUser)
|| UserHandle.SYSTEM.equals(mUser)) {
mFailureHandler.sendMessageDelayed(