diff options
| author | Lucas Dupin <dupin@google.com> | 2022-03-23 17:11:24 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-03-23 17:11:24 +0000 |
| commit | f4dbcd621f50cb0b226605eabe40dca78d59a502 (patch) | |
| tree | 0f9f6b34e2a38a9ab7c96ba5ad62a0cf66b0248a /core/java/android | |
| parent | cb2985a2ae88e29ac310552fd435056f31b37a80 (diff) | |
| parent | 1ad640ba13a86a770a369ff08728dc2cc4e0757c (diff) | |
Merge "Asynchronously bind/unbind service" into tm-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java | 14 | ||||
| -rw-r--r-- | core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java | 8 |
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(); |
