# OverlayControllerCallbackAdapter

# 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)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/window/java/embedding/OverlayControllerCallbackAdapter "View this page in Java")

<br />

```
class OverlayControllerCallbackAdapter
```

<br />

*** ** * ** ***

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

It should only be used if[OverlayController.overlayInfo](https://developer.android.com/reference/kotlin/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                                                                                                                                                                                                                                                                     |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [OverlayControllerCallbackAdapter](https://developer.android.com/reference/kotlin/androidx/window/java/embedding/OverlayControllerCallbackAdapter#OverlayControllerCallbackAdapter(androidx.window.embedding.OverlayController))`(controller: `[OverlayController](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayController)`)` creates a callback adapter of[OverlayController.overlayInfo](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayController#overlayInfo(kotlin.String))flow API. |

|                             ### Public functions                              |
|-------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | `@`[RequiresWindowSdkExtension](https://developer.android.com/reference/kotlin/androidx/window/RequiresWindowSdkExtension)`(version = 5)` [addOverlayInfoListener](https://developer.android.com/reference/kotlin/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer))`(` ` overlayTag: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`,` ` executor: `[Executor](https://developer.android.com/reference/java/util/concurrent/Executor.html)`,` ` consumer: `[Consumer](https://developer.android.com/reference/kotlin/androidx/core/util/Consumer)`<`[OverlayInfo](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayInfo)`>` `)` Registers a listener for updates of[OverlayInfo](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayInfo)that[overlayTag](https://developer.android.com/reference/kotlin/androidx/window/java/embedding/OverlayControllerCallbackAdapter#addOverlayInfoListener(kotlin.String,java.util.concurrent.Executor,androidx.core.util.Consumer))is associated with. |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | `@`[RequiresWindowSdkExtension](https://developer.android.com/reference/kotlin/androidx/window/RequiresWindowSdkExtension)`(version = 5)` [removeOverlayInfoListener](https://developer.android.com/reference/kotlin/androidx/window/java/embedding/OverlayControllerCallbackAdapter#removeOverlayInfoListener(androidx.core.util.Consumer))`(consumer: `[Consumer](https://developer.android.com/reference/kotlin/androidx/core/util/Consumer)`<`[OverlayInfo](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayInfo)`>)` Unregisters a listener that was previously registered via[addOverlayInfoListener](https://developer.android.com/reference/kotlin/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)  

```
OverlayControllerCallbackAdapter(controller: OverlayController)
```

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

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

## Public functions

### addOverlayInfoListener

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

```
@RequiresWindowSdkExtension(version = 5)
fun addOverlayInfoListener(
    overlayTag: String,
    executor: Executor,
    consumer: Consumer<OverlayInfo>
): Unit
```

Registers a listener for updates of[OverlayInfo](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayInfo)that[overlayTag](https://developer.android.com/reference/kotlin/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[ActivityStack](https://developer.android.com/reference/kotlin/androidx/window/embedding/ActivityStack), the reported[OverlayInfo.activityStack](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayInfo#activityStack())and[OverlayInfo.currentOverlayAttributes](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayInfo#currentOverlayAttributes())will be`null`.

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

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

### removeOverlayInfoListener

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

```
@RequiresWindowSdkExtension(version = 5)
fun removeOverlayInfoListener(consumer: Consumer<OverlayInfo>): Unit
```

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

|                                                                                                 Parameters                                                                                                  |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| `consumer: `[Consumer](https://developer.android.com/reference/kotlin/androidx/core/util/Consumer)`<`[OverlayInfo](https://developer.android.com/reference/kotlin/androidx/window/embedding/OverlayInfo)`>` | the previously registered[Consumer](https://developer.android.com/reference/kotlin/androidx/core/util/Consumer)to unregister. |