diff options
author | Jeff Sharkey <jsharkey@android.com> | 2016-10-26 16:58:49 -0600 |
---|---|---|
committer | gitbuildkicker <android-build@google.com> | 2016-10-28 11:15:54 -0700 |
commit | 71591f3922a98cd536b9b1e9e1d9d1d3bf9e51a4 (patch) | |
tree | 188e8821eed3b1f6b6e1becf8aa66d78a8c6eb61 | |
parent | 75cdae7d00b1fee471bc551675748bfa7982084a (diff) | |
download | base-71591f3922a98cd536b9b1e9e1d9d1d3bf9e51a4.tar.gz |
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
(cherry picked from commit 7765d7320d8435a0e814d9f10039c7866f9d76a2)
-rw-r--r-- | services/core/java/com/android/server/pm/EphemeralResolverConnection.java | 8 |
1 files 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 68b465aaf816..a6a377419a6a 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) { |