# LifecycleRegistry

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

*** ** * ** ***

Common/AllAndroid/JVM
- Cmn

  ```
  open class LifecycleRegistry : Lifecycle
  ```

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.lifecycle.Lifecycle](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle) ||
|   | ↳ | [androidx.lifecycle.LifecycleRegistry](https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry) |

*** ** * ** ***

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

Commonly used by UI containers (like Activities or Fragments on Android) to manage component lifecycles. Can be used directly to implement custom `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` components.

## Summary

| ### Public companion functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry` | `@https://developer.android.com/reference/kotlin/androidx/annotation/VisibleForTesting https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#createUnsafe(androidx.lifecycle.LifecycleOwner)(owner: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner)` Creates a new `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry` for the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` without main-thread enforcement. | Cmn |

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#LifecycleRegistry(androidx.lifecycle.LifecycleOwner)(provider: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner)` Creates a new `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry` for the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#(androidx.lifecycle.LifecycleOwner)`. | Cmn |

| ### Public functions |
|---|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#addObserver(androidx.lifecycle.LifecycleObserver)(observer: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver)` Adds a `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver` that will be notified when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` changes state. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event)(event: https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event)` Sets the current `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` and notifies the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver`s. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread [markState](https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#markState(androidx.lifecycle.Lifecycle.State))(state: https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State)` **This function is deprecated.** Override \[currentState\]. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#removeObserver(androidx.lifecycle.LifecycleObserver)(observer: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver)` Removes the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#removeObserver(androidx.lifecycle.LifecycleObserver)` from the list of registered `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver`s. | Cmn |

| ### Public properties |
|---|---|---|
| `open https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#currentState()` The current `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle`. | Cmn |
| `open https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html<https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State>` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#currentStateFlow()` 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/kotlin/androidx/lifecycle/Lifecycle.State` of this `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle`. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#observerCount()` The number of registered `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver`s. | Cmn |

## Public companion functions

### createUnsafe

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

```
@VisibleForTesting
fun createUnsafe(owner: LifecycleOwner): LifecycleRegistry
```

Creates a new `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry` for the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` without main-thread enforcement.

Note: `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry` is not thread-safe. Multiple threads accessing it must synchronize externally. Useful for JVM testing where a main thread dispatcher is absent.

## Public constructors

### LifecycleRegistry

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

```
LifecycleRegistry(provider: LifecycleOwner)
```

Creates a new `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry` for the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#(androidx.lifecycle.LifecycleOwner)`.

You should usually create this inside your `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` class's constructor and hold onto the same instance.

| Parameters |
|---|---|
| `provider: https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` | The owner `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` |

## Public functions

### addObserver

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

```
@MainThread
open fun addObserver(observer: LifecycleObserver): Unit
```

Adds a `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver` that will be notified when the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleOwner` changes state.

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

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

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if no event exists to move up from the observer's initial state. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if main-thread enforcement is enabled and called on a thread other than the main thread. |

### handleLifecycleEvent

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

```
open fun handleLifecycleEvent(event: Lifecycle.Event): Unit
```

Sets the current `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` and notifies the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver`s.

No-ops if the target state of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event)` matches `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#currentState()`.

| Parameters |
|---|---|
| `event: https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event` | The `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event` to process. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if main-thread enforcement is enabled and called on a thread other than the main thread. |

### markState

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

```
@MainThread
open fun [markState](https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleRegistry#markState(androidx.lifecycle.Lifecycle.State))(state: Lifecycle.State): Unit
```

> [!CAUTION]
> **This function is deprecated.**   
> Override \[currentState\].

Moves the Lifecycle to the given state and dispatches necessary events to the observers.

| Parameters |
|---|---|
| `state: https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` | new state |

### removeObserver

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

```
@MainThread
open fun removeObserver(observer: LifecycleObserver): Unit
```

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

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

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if main-thread enforcement is enabled and called on a thread other than the main thread. |

## Public properties

### currentState

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

```
open var currentState: Lifecycle.State
```

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

Transitions the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle` to the given target `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` and dispatches the corresponding `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.Event`s to any registered `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver`s.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if main-thread enforcement is enabled and called on a thread other than the main thread. |

### currentStateFlow

Cmn

```
open val currentStateFlow: StateFlow<Lifecycle.State>
```

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/kotlin/androidx/lifecycle/Lifecycle.State` of this `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle`.

### observerCount

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

```
open val observerCount: Int
```

The number of registered `https://developer.android.com/reference/kotlin/androidx/lifecycle/LifecycleObserver`s.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if main-thread enforcement is enabled and called on a thread other than the main thread. |