# ActivityEmbeddingControllerCallbackAdapter

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/ActivityEmbeddingControllerCallbackAdapter.kt+class:androidx.window.java.embedding.ActivityEmbeddingControllerCallbackAdapter) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/window#1.4.0)

*** ** * ** ***


```
public final class ActivityEmbeddingControllerCallbackAdapter
```

<br />

*** ** * ** ***

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

It should only be used if `https://developer.android.com/reference/androidx/window/embedding/ActivityEmbeddingController#embeddedActivityWindowInfo(android.app.Activity)` 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/ActivityEmbeddingControllerCallbackAdapter#ActivityEmbeddingControllerCallbackAdapter(androidx.window.embedding.ActivityEmbeddingController)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/window/embedding/ActivityEmbeddingController controller )` creates a callback adapter of `https://developer.android.com/reference/androidx/window/embedding/ActivityEmbeddingController#embeddedActivityWindowInfo(android.app.Activity)` flow API. |

| ### Public methods |
|---|---|
| `final void` | `@https://developer.android.com/reference/androidx/window/RequiresWindowSdkExtension(version = 6) https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/app/Activity.html activity, @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/EmbeddedActivityWindowInfo> listener )` Registers a listener for updates of `https://developer.android.com/reference/androidx/window/embedding/EmbeddedActivityWindowInfo` of `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)`. |
| `final void` | `@https://developer.android.com/reference/androidx/window/RequiresWindowSdkExtension(version = 6) https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#removeEmbeddedActivityWindowInfoListener(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/EmbeddedActivityWindowInfo> listener )` Unregisters a listener that was previously registered via `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)`. |

## Public constructors

### ActivityEmbeddingControllerCallbackAdapter

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

```
public ActivityEmbeddingControllerCallbackAdapter(
    @NonNull ActivityEmbeddingController controller
)
```

creates a callback adapter of `https://developer.android.com/reference/androidx/window/embedding/ActivityEmbeddingController#embeddedActivityWindowInfo(android.app.Activity)` flow API.

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

## Public methods

### addEmbeddedActivityWindowInfoListener

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

```
@RequiresWindowSdkExtension(version = 6)
public final void addEmbeddedActivityWindowInfoListener(
    @NonNull Activity activity,
    @NonNull Executor executor,
    @NonNull Consumer<@NonNull EmbeddedActivityWindowInfo> listener
)
```

Registers a listener for updates of `https://developer.android.com/reference/androidx/window/embedding/EmbeddedActivityWindowInfo` of `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)`.

The `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` will immediately be invoked with the latest value upon registration if the `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` is currently embedded as `https://developer.android.com/reference/androidx/window/embedding/EmbeddedActivityWindowInfo#isEmbedded()` is `true`.

When the `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` is embedded, the `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` will be invoked when `https://developer.android.com/reference/androidx/window/embedding/EmbeddedActivityWindowInfo` is changed. When the `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` is not embedded, the `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` will not be triggered unless the `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` is becoming non-embedded from embedded.

Note that this API is only supported on the device with `https://developer.android.com/reference/androidx/window/WindowSdkExtensions#extensionVersion()` equal to or larger than 6. If `https://developer.android.com/reference/androidx/window/WindowSdkExtensions#extensionVersion()` is less than 6, this `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` will not be invoked.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/app/Activity.html activity` | the `https://developer.android.com/reference/android/app/Activity.html` that is interested in getting the embedded window info. |
| `@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/EmbeddedActivityWindowInfo` 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/EmbeddedActivityWindowInfo> listener` | 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/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)` when there is an update to `https://developer.android.com/reference/androidx/window/embedding/EmbeddedActivityWindowInfo`. |

### removeEmbeddedActivityWindowInfoListener

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

```
@RequiresWindowSdkExtension(version = 6)
public final void removeEmbeddedActivityWindowInfoListener(
    @NonNull Consumer<@NonNull EmbeddedActivityWindowInfo> listener
)
```

Unregisters a listener that was previously registered via `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#addEmbeddedActivityWindowInfoListener(android.app.Activity,java.util.concurrent.Executor,androidx.core.util.Consumer)`.

It's no-op if the `https://developer.android.com/reference/androidx/window/java/embedding/ActivityEmbeddingControllerCallbackAdapter#removeEmbeddedActivityWindowInfoListener(androidx.core.util.Consumer)` has not been registered.

| 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/EmbeddedActivityWindowInfo> listener` | the previously registered `https://developer.android.com/reference/androidx/core/util/Consumer` to unregister. |