diff --git a/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java b/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java index f1398bf67283a..70505bc5895b3 100644 --- a/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java +++ b/core/java/com/android/internal/infra/AbstractMultiplePendingRequestsRemoteService.java @@ -25,6 +25,7 @@ import android.util.Slog; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.List; /** * Base class representing a remote service that can queue multiple pending requests while not @@ -39,7 +40,7 @@ public abstract class AbstractMultiplePendingRequestsRemoteService> mPendingRequests; + protected @NonNull List> mPendingRequests; public AbstractMultiplePendingRequestsRemoteService(@NonNull Context context, @NonNull String serviceInterface, @NonNull ComponentName componentName, int userId, @@ -48,35 +49,36 @@ public abstract class AbstractMultiplePendingRequestsRemoteService(mInitialCapacity); } @Override // from AbstractRemoteService void handlePendingRequests() { - if (mPendingRequests != null) { + synchronized (mPendingRequests) { final int size = mPendingRequests.size(); if (mVerbose) Slog.v(mTag, "Sending " + size + " pending requests"); for (int i = 0; i < size; i++) { mPendingRequests.get(i).run(); } - mPendingRequests = null; + mPendingRequests.clear(); } } @Override // from AbstractRemoteService protected void handleOnDestroy() { - if (mPendingRequests != null) { + synchronized (mPendingRequests) { final int size = mPendingRequests.size(); if (mVerbose) Slog.v(mTag, "Canceling " + size + " pending requests"); for (int i = 0; i < size; i++) { mPendingRequests.get(i).cancel(); } - mPendingRequests = null; + mPendingRequests.clear(); } } @Override // from AbstractRemoteService final void handleBindFailure() { - if (mPendingRequests != null) { + synchronized (mPendingRequests) { final int size = mPendingRequests.size(); if (mVerbose) Slog.v(mTag, "Sending failure to " + size + " pending requests"); for (int i = 0; i < size; i++) { @@ -84,7 +86,7 @@ public abstract class AbstractMultiplePendingRequestsRemoteService