summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2016-10-26 16:58:49 -0600
committergitbuildkicker <android-build@google.com>2016-10-28 11:15:54 -0700
commit71591f3922a98cd536b9b1e9e1d9d1d3bf9e51a4 (patch)
tree188e8821eed3b1f6b6e1becf8aa66d78a8c6eb61
parent75cdae7d00b1fee471bc551675748bfa7982084a (diff)
downloadbase-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.java8
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) {