# LifecycleEventEffect

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 https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleEventEffect.composable#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)( event: https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event, lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner, onEvent: () -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Schedule an effect to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives a specific `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event`. | Cmn |

## Functions

### LifecycleEventEffect

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:LifecycleEventEffect) Added in [2.7.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.7.0)

```
@Composable
fun LifecycleEventEffect(
    event: Lifecycle.Event,
    lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
    onEvent: () -> Unit
): Unit
```

Schedule an effect to run when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` receives a specific `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event`.

Using a `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleEventObserver` to listen for when `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/LifecycleEventEffect.composable#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)` enters the composition, `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)` will be launched when receiving the specified `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)`.

This function should **not** be used to listen for `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_DESTROY` because Compose stops recomposing after receiving a `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_STOP` and will never be aware of an ON_DESTROY to launch `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)`.

This function should also **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.

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

@Composable
fun Analytics(dataAnalytics: DataAnalytics) {
    LifecycleEventEffect(Lifecycle.Event.ON_RESUME) { dataAnalytics.trackScreenView("screen1") }

    // ...
}
```

| Parameters |
|---|---|
| `event: https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event` | The `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event` to listen for |
| `lifecycleOwner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner = LocalLifecycleOwner.current` | The lifecycle owner to attach an observer |
| `onEvent: () -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | The effect to be launched when we receive an `https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/package-summary#LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event,androidx.lifecycle.LifecycleOwner,kotlin.Function0)` callback |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if attempting to listen for `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event#ON_DESTROY` |