# ViewCompositionStrategy

Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/platform/ViewCompositionStrategy.android.kt+class:androidx.compose.ui.platform.ViewCompositionStrategy) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0) Common/AllAndroid/JVM
- android

  ```
  interface ViewCompositionStrategy
  ```
Known direct subclasses [ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool), [ViewCompositionStrategy.DisposeOnDetachedFromWindow](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow), [ViewCompositionStrategy.DisposeOnLifecycleDestroyed](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnLifecycleDestroyed), [ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool` | The composition will be disposed automatically when the view is detached from a window, unless it is part of a `https://developer.android.com/reference/kotlin/androidx/customview/poolingcontainer/package-summary#(android.view.View).isPoolingContainer()`, such as `RecyclerView`. |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` that disposes the composition whenever the view becomes detached from a window. |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnLifecycleDestroyed` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` that disposes the composition when `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnLifecycleDestroyed#lifecycle()` is `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_DESTROY`. |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` that disposes the composition when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` returned by `https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#(android.view.View).findViewTreeLifecycleOwner()` of the next window the view is attached to is `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_DESTROY`. |

*** ** * ** ***

A strategy for managing the underlying Composition of Compose UI `https://developer.android.com/reference/android/view/View.html`s such as `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView`. See `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView#setViewCompositionStrategy(androidx.compose.ui.platform.ViewCompositionStrategy)`.

Compose views involve ongoing work and registering the composition with external event sources. These registrations can cause the composition to remain live and ineligible for garbage collection for long after the host View may have been abandoned. These resources and registrations can be released manually at any time by calling `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView#disposeComposition()` and a new composition will be created automatically when needed. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` defines a strategy for disposing the composition automatically at an appropriate time.

By default, Compose UI views are configured to `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#Default()`.

## Summary

| ### Nested types |
|---|
| `object https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow : https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` that disposes the composition whenever the view becomes detached from a window. |
| `object https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool : https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` The composition will be disposed automatically when the view is detached from a window, unless it is part of a `https://developer.android.com/reference/kotlin/androidx/customview/poolingcontainer/package-summary#(android.view.View).isPoolingContainer()`, such as `RecyclerView`. |
| `class https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnLifecycleDestroyed : https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` that disposes the composition when `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnLifecycleDestroyed#lifecycle()` is `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_DESTROY`. |
| `object https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed : https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` that disposes the composition when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` returned by `https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#(android.view.View).findViewTreeLifecycleOwner()` of the next window the view is attached to is `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_DESTROY`. |

| ### Public companion properties |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#Default()` The default strategy for `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView`. | android |

| ### Public functions |
|---|---|---|
| `() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#installFor(androidx.compose.ui.platform.AbstractComposeView)(view: https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView)` Install this strategy for `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#installFor(androidx.compose.ui.platform.AbstractComposeView)` and return a function that will uninstall it later. | android |

## Public companion properties

### Default

android Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.2.0)

```
val Default: ViewCompositionStrategy
```

The default strategy for `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView`.

Currently, this is `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool`, though this implementation detail may change.

## Public functions

### installFor

android Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun installFor(view: AbstractComposeView): () -> Unit
```

Install this strategy for `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#installFor(androidx.compose.ui.platform.AbstractComposeView)` and return a function that will uninstall it later. This function should not be called directly; it is called by `https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView#setViewCompositionStrategy(androidx.compose.ui.platform.ViewCompositionStrategy)` after uninstalling the previous strategy.