From 7765d7320d8435a0e814d9f10039c7866f9d76a2 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 26 Oct 2016 16:58:49 -0600 Subject: [PATCH] Only bind to RESOLVE_EPHEMERAL_PACKAGE once. We never unbind, so we only ever need one bind request; creating more bind requests just wastes resources. Test: builds Bug: 32446301 Change-Id: I7d6c4a93b8f5bb8d9aed7a5041b193e19a2d65fc --- .../android/server/pm/EphemeralResolverConnection.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/EphemeralResolverConnection.java b/services/core/java/com/android/server/pm/EphemeralResolverConnection.java index 68b465aaf816b..a6a377419a6a3 100644 --- a/services/core/java/com/android/server/pm/EphemeralResolverConnection.java +++ b/services/core/java/com/android/server/pm/EphemeralResolverConnection.java @@ -56,6 +56,7 @@ final class EphemeralResolverConnection { /** Intent used to bind to the service */ private final Intent mIntent; + private volatile boolean mBindRequested; private IEphemeralResolver mRemoteInstance; public EphemeralResolverConnection(Context context, ComponentName componentName) { @@ -111,8 +112,11 @@ final class EphemeralResolverConnection { return; } - mContext.bindServiceAsUser(mIntent, mServiceConnection, - Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE, UserHandle.SYSTEM); + if (!mBindRequested) { + mBindRequested = true; + mContext.bindServiceAsUser(mIntent, mServiceConnection, + Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE, UserHandle.SYSTEM); + } final long startMillis = SystemClock.uptimeMillis(); while (true) {