# OverlayControllerCallbackAdapter

Artifact: [androidx.window:window-java](https://developer.android.com/jetpack/androidx/releases/window) [View Source](https://cs.android.com/search?q=file:androidx/window/java/embedding/OverlayControllerCallbackAdapter.kt+class:androidx.window.java.embedding.OverlayControllerCallbackAdapter) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/window#1.4.0)

*** ** * ** ***


```
public final class OverlayControllerCallbackAdapter
```

<br />

*** ** * ** ***

An adapted interface for `https://developer.android.com/reference/androidx/window/embedding/OverlayController` that provides callback shaped APIs to report the latest `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo`.

It should only be used if `https://developer.android.com/reference/androidx/window/embedding/OverlayController#overlayInfo(kotlin.String)` is not available. For example, an app is written in Java and cannot use Flow APIs.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#OverlayControllerCallbackAdapter(androidx.window.embedding.OverlayController)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/window/embedding/OverlayController controller)` creates a callback adapter of `https://developer.android.com/reference/androidx/window/embedding/OverlayController#overlayInfo(kotlin.String)` flow API. |

| ### Public methods |
|---|---|
| `final void` | `@https://developer.android.com/reference/androidx/window/RequiresWindowSdkExtension(version = 5) https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html overlayTag, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/util/Consumer<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/window/embedding/OverlayInfo> consumer )` Registers a listener for updates of `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo` that `https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer)` is associated with. |
| `final void` | `@https://developer.android.com/reference/androidx/window/RequiresWindowSdkExtension(version = 5) https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#removeOverlayInfoListener(androidx.core.util.Consumer)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/util/Consumer<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/window/embedding/OverlayInfo> consumer )` Unregisters a listener that was previously registered via `https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer)`. |

## Public constructors

### OverlayControllerCallbackAdapter

Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/window#1.4.0)

```
public OverlayControllerCallbackAdapter(@NonNull OverlayController controller)
```

creates a callback adapter of `https://developer.android.com/reference/androidx/window/embedding/OverlayController#overlayInfo(kotlin.String)` flow API.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/window/embedding/OverlayController controller` | an `https://developer.android.com/reference/androidx/window/embedding/OverlayController` that can be obtained by `https://developer.android.com/reference/androidx/window/embedding/OverlayController.Companion#getInstance(android.content.Context)`. |

## Public methods

### addOverlayInfoListener

Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/window#1.4.0)

```
@RequiresWindowSdkExtension(version = 5)
public final void addOverlayInfoListener(
    @NonNull String overlayTag,
    @NonNull Executor executor,
    @NonNull Consumer<@NonNull OverlayInfo> consumer
)
```

Registers a listener for updates of `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo` that `https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer)` is associated with.

If there is no active overlay `https://developer.android.com/reference/androidx/window/embedding/ActivityStack`, the reported `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo#activityStack()` and `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo#currentOverlayAttributes()` will be `null`.

Note that launching an overlay `https://developer.android.com/reference/androidx/window/embedding/ActivityStack` only supports on the device with `https://developer.android.com/reference/androidx/window/WindowSdkExtensions#extensionVersion()` equal to or larger than 5. If `https://developer.android.com/reference/androidx/window/WindowSdkExtensions#extensionVersion()` is less than 5, this flow will always report `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo` without associated `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo#activityStack()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html overlayTag` | the overlay `https://developer.android.com/reference/androidx/window/embedding/ActivityStack`'s tag which is set through `https://developer.android.com/reference/androidx/window/embedding/OverlayCreateParams` |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | the `https://developer.android.com/reference/java/util/concurrent/Executor.html` to dispatch the `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo` change |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/util/Consumer<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/window/embedding/OverlayInfo> consumer` | the `https://developer.android.com/reference/androidx/core/util/Consumer` that will be invoked on the `https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer)` when there is an update to `https://developer.android.com/reference/androidx/window/embedding/OverlayInfo`. |

### removeOverlayInfoListener

Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/window#1.4.0)

```
@RequiresWindowSdkExtension(version = 5)
public final void removeOverlayInfoListener(
    @NonNull Consumer<@NonNull OverlayInfo> consumer
)
```

Unregisters a listener that was previously registered via `https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer)`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/util/Consumer<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/window/embedding/OverlayInfo> consumer` | the previously registered `https://developer.android.com/reference/androidx/core/util/Consumer` to unregister. |