# ObservableComposition

Artifact: [androidx.compose.runtime:runtime](https://developer.android.com/jetpack/androidx/releases/compose-runtime) [View Source](https://cs.android.com/search?q=file:androidx/compose/runtime/tooling/CompositionObserver.kt+class:androidx.compose.runtime.tooling.ObservableComposition) Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.9.0) Common/AllAndroid/JVM
- Cmn

  ```
  @ExperimentalComposeRuntimeApi
  interface ObservableComposition
  ```

*** ** * ** ***

A composition instance that supports observing lifecycle of its `https://developer.android.com/reference/kotlin/androidx/compose/runtime/RecomposeScope`.

## Summary

| ### Public functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/CompositionObserverHandle` | `https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/ObservableComposition#setObserver(androidx.compose.runtime.tooling.CompositionObserver)(observer: https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/CompositionObserver)` Observe the composition. | Cmn |

## Public functions

### setObserver

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.9.0)

```
fun setObserver(observer: CompositionObserver): CompositionObserverHandle
```

Observe the composition. Calling this twice on the same composition will implicitly dispose the previous observer. the `https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/CompositionObserver` will be called for this composition and all sub-composition, transitively, for which this composition is a context. If `https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/ObservableComposition#setObserver(androidx.compose.runtime.tooling.CompositionObserver)` is called on a sub-composition, it will override the parent composition observer for itself and all its sub-compositions.

The observer is resolved once per composition pass, between `https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/CompositionObserver#onBeginComposition(androidx.compose.runtime.tooling.ObservableComposition)` and `https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/CompositionObserver#onEndComposition(androidx.compose.runtime.tooling.ObservableComposition)`. Setting or replacing the observer while a pass is in progress takes effect starting with the next pass.

| Parameters |
|---|---|
| `observer: https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/CompositionObserver` | the observer that will be informed of composition events for this composition and all sub-compositions for which this composition is the composition context. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/tooling/CompositionObserverHandle` | a handle that allows the observer to be disposed and detached from the composition. Disposing an observer for a composition with a parent observer will begin sending the events to the parent composition's observer. |