# LifecycleResumeEffect

Common/All

## Functions summary

|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable [LifecycleResumeEffect](https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(androidx.lifecycle.LifecycleOwner,kotlin.Function1))( lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner, effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult )` **This function is deprecated.** LifecycleResumeEffect must provide one or more 'key' parameters that define the identity of the LifecycleResumeEffect and determine when its previous effect coroutine should be cancelled and a new effect launched for the new key. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)( key1: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner, effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult )` Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)( vararg keys: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner, effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult )` Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)( key1: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, key2: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner, effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult )` Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)( key1: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, key2: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, key3: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner, effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult )` Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). | Cmn |

## Functions

### LifecycleResumeEffect

Cmn Artifact: [androidx.lifecycle:lifecycle-runtime-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/compose/LifecycleEffect.kt+function:LifecycleResumeEffect)

```
@Composable
fun [LifecycleResumeEffect](https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(androidx.lifecycle.LifecycleOwner,kotlin.Function1))(
    lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
    effects: LifecycleResumePauseEffectScope.() -> LifecyclePauseOrDisposeEffectResult
): Unit
```

> [!CAUTION]
> **This function is deprecated.**   
> LifecycleResumeEffect must provide one or more 'key' parameters that define the identity of the LifecycleResumeEffect and determine when its previous effect coroutine should be cancelled and a new effect launched for the new key.

It is an error to call `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleStartEffect.composable#LifecycleStartEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` without at least one `key` parameter.

This deprecated-error function shadows the varargs overload so that the varargs version is not used without key parameters.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(androidx.lifecycle.LifecycleOwner,kotlin.Function1)` |   |

### LifecycleResumeEffect

Cmn Artifact: [androidx.lifecycle:lifecycle-runtime-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/compose/LifecycleEffect.kt+function:LifecycleResumeEffect)

```
@Composable
fun LifecycleResumeEffect(
    key1: Any?,
    lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
    effects: LifecycleResumePauseEffectScope.() -> LifecyclePauseOrDisposeEffectResult
): Unit
```

Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). The ON_RESUME effect will be the body of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block and the ON_PAUSE effect will be within the (onPauseOrDispose clause)`https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)`:

```kotlin
LifecycleResumeEffect(lifecycleOwner) {
    // add ON_RESUME effect here

    onPauseOrDispose {
        // add clean up for work kicked off in the ON_RESUME effect here
    }
}
```

```kotlin
import androidx.compose.runtime.Composable
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LifecycleResumeEffect

@Composable
fun Analytics(dataAnalytics: DataAnalytics) {
    LifecycleResumeEffect(dataAnalytics) {
        val timeTracker = dataAnalytics.startTimeTracking()

        onPauseOrDispose { timeTracker.stopTimeTracking() }
    }

    // ...
}
```

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` **must** include an `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` clause as the final statement in its `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block. If your operation does not require an effect for *both* `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` and `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE`, a `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleEventEffect.composable#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)` should be used instead.

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`'s *key* is a value that defines the identity of the effect. If a key changes, the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` must `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` its current `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` and reset by calling `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` again. Examples of keys include:

- Observable objects that the effect subscribes to

- Unique request parameters to an operation that must cancel and retry if those parameters change

This function uses a `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleEventObserver` to listen for when `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` enters the composition and the effects will be launched when receiving a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, respectively. If the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` leaves the composition prior to receiving an `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` will be called to clean up the work that was kicked off in the ON_RESUME effect.

This function should **not** be used to launch tasks in response to callback events by way of storing callback data as a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` in a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState`. Instead, see `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/currentStateAsState.composable#(androidx.lifecycle.Lifecycle).currentStateAsState()` to obtain a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State` that may be used to launch jobs in response to state changes.

| Parameters |
|---|---|
| `key1: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | The unique value to trigger recomposition upon change |
| `lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner = LocalLifecycleOwner.current` | The lifecycle owner to attach an observer |
| `effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult` | The effects to be launched when we receive the respective event callbacks |

### LifecycleResumeEffect

Cmn Artifact: [androidx.lifecycle:lifecycle-runtime-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/compose/LifecycleEffect.kt+function:LifecycleResumeEffect)

```
@Composable
fun LifecycleResumeEffect(
    vararg keys: Any?,
    lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
    effects: LifecycleResumePauseEffectScope.() -> LifecyclePauseOrDisposeEffectResult
): Unit
```

Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). The ON_RESUME effect will be the body of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block and the ON_PAUSE effect will be within the (onPauseOrDispose clause)`https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)`:

```kotlin
LifecycleResumeEffect(lifecycleOwner) {
    // add ON_RESUME effect here

    onPauseOrDispose {
        // add clean up for work kicked off in the ON_RESUME effect here
    }
}
```

```kotlin
import androidx.compose.runtime.Composable
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LifecycleResumeEffect

@Composable
fun Analytics(dataAnalytics: DataAnalytics) {
    LifecycleResumeEffect(dataAnalytics) {
        val timeTracker = dataAnalytics.startTimeTracking()

        onPauseOrDispose { timeTracker.stopTimeTracking() }
    }

    // ...
}
```

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` **must** include an `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` clause as the final statement in its `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block. If your operation does not require an effect for *both* `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` and `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE`, a `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleEventEffect.composable#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)` should be used instead.

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`'s *key* is a value that defines the identity of the effect. If a key changes, the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` must `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` its current `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` and reset by calling `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` again. Examples of keys include:

- Observable objects that the effect subscribes to

- Unique request parameters to an operation that must cancel and retry if those parameters change

This function uses a `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleEventObserver` to listen for when `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` enters the composition and the effects will be launched when receiving a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, respectively. If the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Array,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` leaves the composition prior to receiving an `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` will be called to clean up the work that was kicked off in the ON_RESUME effect.

This function should **not** be used to launch tasks in response to callback events by way of storing callback data as a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` in a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState`. Instead, see `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/currentStateAsState.composable#(androidx.lifecycle.Lifecycle).currentStateAsState()` to obtain a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State` that may be used to launch jobs in response to state changes.

| Parameters |
|---|---|
| `vararg keys: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | The unique values to trigger recomposition upon changes |
| `lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner = LocalLifecycleOwner.current` | The lifecycle owner to attach an observer |
| `effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult` | The effects to be launched when we receive the respective event callbacks |

### LifecycleResumeEffect

Cmn Artifact: [androidx.lifecycle:lifecycle-runtime-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/compose/LifecycleEffect.kt+function:LifecycleResumeEffect)

```
@Composable
fun LifecycleResumeEffect(
    key1: Any?,
    key2: Any?,
    lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
    effects: LifecycleResumePauseEffectScope.() -> LifecyclePauseOrDisposeEffectResult
): Unit
```

Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). The ON_RESUME effect will be the body of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block and the ON_PAUSE effect will be within the (onPauseOrDispose clause)`https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)`:

```kotlin
LifecycleResumeEffect(lifecycleOwner) {
    // add ON_RESUME effect here

    onPauseOrDispose {
        // add clean up for work kicked off in the ON_RESUME effect here
    }
}
```

```kotlin
import androidx.compose.runtime.Composable
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LifecycleResumeEffect

@Composable
fun Analytics(dataAnalytics: DataAnalytics) {
    LifecycleResumeEffect(dataAnalytics) {
        val timeTracker = dataAnalytics.startTimeTracking()

        onPauseOrDispose { timeTracker.stopTimeTracking() }
    }

    // ...
}
```

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` **must** include an `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` clause as the final statement in its `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block. If your operation does not require an effect for *both* `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` and `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE`, a `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleEventEffect.composable#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)` should be used instead.

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`'s *key* is a value that defines the identity of the effect. If a key changes, the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` must `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` its current `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` and reset by calling `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` again. Examples of keys include:

- Observable objects that the effect subscribes to

- Unique request parameters to an operation that must cancel and retry if those parameters change

This function uses a `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleEventObserver` to listen for when `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` enters the composition and the effects will be launched when receiving a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, respectively. If the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` leaves the composition prior to receiving an `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` will be called to clean up the work that was kicked off in the ON_RESUME effect.

This function should **not** be used to launch tasks in response to callback events by way of storing callback data as a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` in a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState`. Instead, see `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/currentStateAsState.composable#(androidx.lifecycle.Lifecycle).currentStateAsState()` to obtain a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State` that may be used to launch jobs in response to state changes.

| Parameters |
|---|---|
| `key1: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A unique value to trigger recomposition upon change |
| `key2: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A unique value to trigger recomposition upon change |
| `lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner = LocalLifecycleOwner.current` | The lifecycle owner to attach an observer |
| `effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult` | The effects to be launched when we receive the respective event callbacks |

### LifecycleResumeEffect

Cmn Artifact: [androidx.lifecycle:lifecycle-runtime-compose](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/compose/LifecycleEffect.kt+function:LifecycleResumeEffect)

```
@Composable
fun LifecycleResumeEffect(
    key1: Any?,
    key2: Any?,
    key3: Any?,
    lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
    effects: LifecycleResumePauseEffectScope.() -> LifecyclePauseOrDisposeEffectResult
): Unit
```

Schedule a pair of effects to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives either a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` (or any new unique value of `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`). The ON_RESUME effect will be the body of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block and the ON_PAUSE effect will be within the (onPauseOrDispose clause)`https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)`:

```kotlin
LifecycleResumeEffect(lifecycleOwner) {
    // add ON_RESUME effect here

    onPauseOrDispose {
        // add clean up for work kicked off in the ON_RESUME effect here
    }
}
```

```kotlin
import androidx.compose.runtime.Composable
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LifecycleResumeEffect

@Composable
fun Analytics(dataAnalytics: DataAnalytics) {
    LifecycleResumeEffect(dataAnalytics) {
        val timeTracker = dataAnalytics.startTimeTracking()

        onPauseOrDispose { timeTracker.stopTimeTracking() }
    }

    // ...
}
```

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` **must** include an `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` clause as the final statement in its `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` block. If your operation does not require an effect for *both* `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` and `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE`, a `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleEventEffect.composable#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)` should be used instead.

A `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)`'s *key* is a value that defines the identity of the effect. If a key changes, the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` must `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` its current `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` and reset by calling `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` again. Examples of keys include:

- Observable objects that the effect subscribes to

- Unique request parameters to an operation that must cancel and retry if those parameters change

This function uses a `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleEventObserver` to listen for when `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` enters the composition and the effects will be launched when receiving a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_RESUME` or `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, respectively. If the `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumeEffect.composable#LifecycleResumeEffect(kotlin.Any,kotlin.Any,kotlin.Any,androidx.lifecycle.LifecycleOwner,kotlin.Function1)` leaves the composition prior to receiving an `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_PAUSE` event, `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope#onPauseOrDispose(kotlin.Function1)` will be called to clean up the work that was kicked off in the ON_RESUME effect.

This function should **not** be used to launch tasks in response to callback events by way of storing callback data as a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` in a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState`. Instead, see `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/currentStateAsState.composable#(androidx.lifecycle.Lifecycle).currentStateAsState()` to obtain a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State` that may be used to launch jobs in response to state changes.

| Parameters |
|---|---|
| `key1: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A unique value to trigger recomposition upon change |
| `key2: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A unique value to trigger recomposition upon change |
| `key3: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A unique value to trigger recomposition upon change |
| `lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner = LocalLifecycleOwner.current` | The lifecycle owner to attach an observer |
| `effects: https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleResumePauseEffectScope.() -> https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecyclePauseOrDisposeEffectResult` | The effects to be launched when we receive the respective event callbacks |