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(