# Lifecycle

Artifact: [androidx.lifecycle:lifecycle-common](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/Lifecycle.kt+class:androidx.lifecycle.Lifecycle) Added in [2.0.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.0.0)

*** ** * ** ***


```
public abstract class Lifecycle
```

<br />

Known direct subclasses [LifecycleRegistry](https://developer.android.com/reference/androidx/lifecycle/LifecycleRegistry)

|---|---|
| `https://developer.android.com/reference/androidx/lifecycle/LifecycleRegistry` | A `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` implementation that manages multiple `https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver`s. |

*** ** * ** ***

Defines an object with a lifecycle state control flow.

Commonly implemented by UI container classes (such as Activities and Fragments on Android) or custom components to expose their lifecycle to other components.

`https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event#ON_CREATE`, `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event#ON_START`, `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event#ON_RESUME` events are dispatched **after** the `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner`'s related method returns. `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event#ON_PAUSE`, `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event#ON_STOP`, `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event#ON_DESTROY` events are dispatched **before** the `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner`'s related method is called. This gives you certain guarantees on which state the owner is in.

To observe lifecycle events, call `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#addObserver(androidx.lifecycle.LifecycleObserver)` passing an object that implements either `https://developer.android.com/reference/androidx/lifecycle/DefaultLifecycleObserver` or `https://developer.android.com/reference/androidx/lifecycle/LifecycleEventObserver`.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` | for the valid lifecycle states. |
| `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event` | for the transition events between states. |

## Summary

| ### Nested types |
|---|
| `public enum https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event extends https://developer.android.com/reference/java/lang/Enum.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event>` Represents a transition event triggered by a change in the `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner`'s state. |
| `public enum https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State extends https://developer.android.com/reference/java/lang/Enum.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State>` Represents the current lifecycle state of a `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner`. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#Lifecycle()()` |

| ### Public methods |
|---|---|
| `abstract void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/lifecycle/Lifecycle#addObserver(androidx.lifecycle.LifecycleObserver)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver observer)` Adds a `https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver` to receive `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner` state changes. |
| `abstract @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/lifecycle/Lifecycle#getCurrentState()()` The current `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State>` | `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#getCurrentStateFlow()()` Returns a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html` where the `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/value.html` represents the current `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`. |
| `abstract void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/lifecycle/Lifecycle#removeObserver(androidx.lifecycle.LifecycleObserver)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver observer)` Removes the given `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#removeObserver(androidx.lifecycle.LifecycleObserver)` from the list of registered observers. |

| ### Extension functions |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver` | `https://developer.android.com/reference/androidx/lifecycle/LifecycleKt.https://developer.android.com/reference/androidx/lifecycle/Lifecycle#(androidx.lifecycle.Lifecycle).addObserver(kotlin.Function3)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle receiver, @https://developer.android.com/reference/androidx/annotation/NonNull Function3<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> action )` Adds a `https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver` to this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` using the provided `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).addObserver(kotlin.Function3)`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleCoroutineScope` | `https://developer.android.com/reference/androidx/lifecycle/LifecycleKt.https://developer.android.com/reference/androidx/lifecycle/Lifecycle#(androidx.lifecycle.Lifecycle).getCoroutineScope()(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle receiver)` `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/index.html` tied to this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event>` | `https://developer.android.com/reference/androidx/lifecycle/LifecycleKt.https://developer.android.com/reference/androidx/lifecycle/Lifecycle#(androidx.lifecycle.Lifecycle).getEventFlow()(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle receiver)` Creates a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html` of `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event`s dispatched by this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull R` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/lifecycle/WithLifecycleStateKt.https://developer.android.com/reference/androidx/lifecycle/Lifecycle#(androidx.lifecycle.Lifecycle).withCreated(kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle receiver, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull R> block )` Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withCreated(kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#CREATED` and resume with the result. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull R` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/lifecycle/WithLifecycleStateKt.https://developer.android.com/reference/androidx/lifecycle/Lifecycle#(androidx.lifecycle.Lifecycle).withResumed(kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle receiver, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull R> block )` Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withResumed(kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#RESUMED` and resume with the result. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull R` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/lifecycle/WithLifecycleStateKt.https://developer.android.com/reference/androidx/lifecycle/Lifecycle#(androidx.lifecycle.Lifecycle).withStarted(kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle receiver, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull R> block )` Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStarted(kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#STARTED` and resume with the result. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull R` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/lifecycle/WithLifecycleStateKt.https://developer.android.com/reference/androidx/lifecycle/Lifecycle#(androidx.lifecycle.Lifecycle).withStateAtLeast(androidx.lifecycle.Lifecycle.State,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle receiver, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State state, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull R> block )` Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStateAtLeast(androidx.lifecycle.Lifecycle.State,kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStateAtLeast(androidx.lifecycle.Lifecycle.State,kotlin.Function0)` and resume with the result. |

## Public constructors

### Lifecycle

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

```
public Lifecycle()
```

## Public methods

### addObserver

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

```
@MainThread
public abstract void addObserver(@NonNull LifecycleObserver observer)
```

Adds a `https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver` to receive `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner` state changes.

Brings the given `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#addObserver(androidx.lifecycle.LifecycleObserver)` up to the current `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of the `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner`. For example, if the `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner` is in `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#STARTED`, the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#addObserver(androidx.lifecycle.LifecycleObserver)` receives `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event#ON_CREATE` and `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event`s.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver observer` | The observer to notify. |

### getCurrentState

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

```
@MainThread
public abstract @NonNull Lifecycle.State getCurrentState()
```

The current `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`.

### getCurrentStateFlow

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

```
public @NonNull StateFlow<@NonNull Lifecycle.State> getCurrentStateFlow()
```

Returns a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html` where the `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/value.html` represents the current `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`.

### removeObserver

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

```
@MainThread
public abstract void removeObserver(@NonNull LifecycleObserver observer)
```

Removes the given `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#removeObserver(androidx.lifecycle.LifecycleObserver)` from the list of registered observers.

If called while a state change is being dispatched:

- If the given `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#removeObserver(androidx.lifecycle.LifecycleObserver)` has not yet received that event, it will not receive it.

- If the given `https://developer.android.com/reference/androidx/lifecycle/Lifecycle#removeObserver(androidx.lifecycle.LifecycleObserver)` has more than one method that observes the currently dispatched event, and at least one of them received the event, all of them receive it, and removal occurs afterward.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver observer` | The observer to remove. |

## Extension functions

### LifecycleKt.addObserver

Artifact: [androidx.lifecycle:lifecycle-common](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/Lifecycle.kt+function:addObserver)

```
public final @NonNull LifecycleObserver LifecycleKt.addObserver(
    @NonNull Lifecycle receiver,
    @NonNull Function3<@NonNull LifecycleObserver, @NonNull LifecycleOwner, @NonNull Lifecycle.Event, Unit> action
)
```

Adds a `https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver` to this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` using the provided `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).addObserver(kotlin.Function3)`.

Invokes `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).addObserver(kotlin.Function3)` whenever a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event` occurs.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function3<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> action` | The action invoked on each `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event`, providing the `https://developer.android.com/reference/androidx/lifecycle/LifecycleOwner` and the specific `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event`. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver` | the added `https://developer.android.com/reference/androidx/lifecycle/LifecycleObserver` instance (can be used to later remove it). |

### LifecycleKt.getCoroutineScope

Artifact: [androidx.lifecycle:lifecycle-common](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/Lifecycle.kt+symbol:coroutineScope)

```
public final @NonNull LifecycleCoroutineScope LifecycleKt.getCoroutineScope(@NonNull Lifecycle receiver)
```

`https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/index.html` tied to this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`.

Canceled when the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` is destroyed. Bound to `Dispatchers.Main.immediate`.

### LifecycleKt.getEventFlow

Artifact: [androidx.lifecycle:lifecycle-common](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/Lifecycle.kt+symbol:eventFlow)

```
public final @NonNull Flow<@NonNull Lifecycle.Event> LifecycleKt.getEventFlow(@NonNull Lifecycle receiver)
```

Creates a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html` of `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.Event`s dispatched by this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle`.

### WithLifecycleStateKt.withCreated

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

```
public final @NonNull R <R extends Object> WithLifecycleStateKt.withCreated(
    @NonNull Lifecycle receiver,
    @NonNull Function0<@NonNull R> block
)
```

Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withCreated(kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#CREATED` and resume with the result. Throws the `https://developer.android.com/reference/androidx/lifecycle/LifecycleDestroyedException` if the lifecycle has reached `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#DESTROYED` by the time of the call or before `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withCreated(kotlin.Function0)` is able to run.

### WithLifecycleStateKt.withResumed

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

```
public final @NonNull R <R extends Object> WithLifecycleStateKt.withResumed(
    @NonNull Lifecycle receiver,
    @NonNull Function0<@NonNull R> block
)
```

Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withResumed(kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#RESUMED` and resume with the result. Throws the `https://developer.android.com/reference/androidx/lifecycle/LifecycleDestroyedException` if the lifecycle has reached `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#DESTROYED` by the time of the call or before `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withResumed(kotlin.Function0)` is able to run.

### WithLifecycleStateKt.withStarted

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

```
public final @NonNull R <R extends Object> WithLifecycleStateKt.withStarted(
    @NonNull Lifecycle receiver,
    @NonNull Function0<@NonNull R> block
)
```

Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStarted(kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#STARTED` and resume with the result. Throws the `https://developer.android.com/reference/androidx/lifecycle/LifecycleDestroyedException` if the lifecycle has reached `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#DESTROYED` by the time of the call or before `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStarted(kotlin.Function0)` is able to run.

### WithLifecycleStateKt.withStateAtLeast

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

```
public final @NonNull R <R extends Object> WithLifecycleStateKt.withStateAtLeast(
    @NonNull Lifecycle receiver,
    @NonNull Lifecycle.State state,
    @NonNull Function0<@NonNull R> block
)
```

Run `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStateAtLeast(androidx.lifecycle.Lifecycle.State,kotlin.Function0)` with this `https://developer.android.com/reference/androidx/lifecycle/Lifecycle` in a `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` of at least `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStateAtLeast(androidx.lifecycle.Lifecycle.State,kotlin.Function0)` and resume with the result. Throws the `https://developer.android.com/reference/androidx/lifecycle/LifecycleDestroyedException` if the lifecycle has reached `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#DESTROYED` by the time of the call or before `https://developer.android.com/reference/androidx/lifecycle/package-summary#(androidx.lifecycle.Lifecycle).withStateAtLeast(androidx.lifecycle.Lifecycle.State,kotlin.Function0)` is able to run.