summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorLucas Dupin <dupin@google.com>2022-03-23 17:11:24 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-03-23 17:11:24 +0000
commitf4dbcd621f50cb0b226605eabe40dca78d59a502 (patch)
tree0f9f6b34e2a38a9ab7c96ba5ad62a0cf66b0248a /core/java/android
parentcb2985a2ae88e29ac310552fd435056f31b37a80 (diff)
parent1ad640ba13a86a770a369ff08728dc2cc4e0757c (diff)
Merge "Asynchronously bind/unbind service" into tm-dev
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java14
-rw-r--r--core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java8
2 files changed, 18 insertions, 4 deletions
diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java
index 38659e12b1ce..091bf797e24b 100644
--- a/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java
+++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java
@@ -42,7 +42,19 @@ public interface QuickAccessWalletClient extends Closeable {
*/
@NonNull
static QuickAccessWalletClient create(@NonNull Context context) {
- return new QuickAccessWalletClientImpl(context);
+ return create(context, null /* bgExecutor */);
+ }
+
+ /**
+ * Create a client for accessing wallet cards from the {@link QuickAccessWalletService}. If the
+ * service is unavailable, {@link #isWalletServiceAvailable()} will return false.
+ * @param context Context.
+ * @param bgExecutor A background {@link Executor} for service registration.
+ * @hide
+ */
+ @NonNull
+ static QuickAccessWalletClient create(@NonNull Context context, @Nullable Executor bgExecutor) {
+ return new QuickAccessWalletClientImpl(context, bgExecutor);
}
/**
diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java
index 95b51ea4dece..a3304a9ca386 100644
--- a/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java
+++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java
@@ -67,6 +67,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
private final Context mContext;
private final Queue<ApiCaller> mRequestQueue;
private final Map<WalletServiceEventListener, String> mEventListeners;
+ private final Executor mLifecycleExecutor;
private boolean mIsConnected;
/** Timeout for active service connections (1 minute) */
private static final long SERVICE_CONNECTION_TIMEOUT_MS = 60 * 1000;
@@ -79,10 +80,11 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
private static final int MSG_TIMEOUT_SERVICE = 5;
- QuickAccessWalletClientImpl(@NonNull Context context) {
+ QuickAccessWalletClientImpl(@NonNull Context context, @Nullable Executor bgExecutor) {
mContext = context.getApplicationContext();
mServiceInfo = QuickAccessWalletServiceInfo.tryCreate(context);
mHandler = new Handler(Looper.getMainLooper());
+ mLifecycleExecutor = (bgExecutor == null) ? Runnable::run : bgExecutor;
mRequestQueue = new LinkedList<>();
mEventListeners = new HashMap<>(1);
}
@@ -369,7 +371,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
Intent intent = new Intent(SERVICE_INTERFACE);
intent.setComponent(mServiceInfo.getComponentName());
int flags = Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY;
- mContext.bindService(intent, this, flags);
+ mLifecycleExecutor.execute(() -> mContext.bindService(intent, this, flags));
resetServiceConnectionTimeout();
}
@@ -411,7 +413,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
return;
}
mIsConnected = false;
- mContext.unbindService(/*conn=*/ this);
+ mLifecycleExecutor.execute(() -> mContext.unbindService(/*conn=*/ this));
mService = null;
mEventListeners.clear();
mRequestQueue.clear();