# ViewModelLazy

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

*** ** * ** ***


```
public final class ViewModelLazy<VM extends ViewModel> implements Lazy<@NonNull VM>
```

<br />

*** ** * ** ***

An implementation of `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-lazy/index.html` to facilitate lazy retrieval of `https://developer.android.com/reference/androidx/lifecycle/ViewModel` instances.

`https://developer.android.com/reference/androidx/lifecycle/ViewModelLazy#storeProducer()` is a lambda called during initialization; the `https://developer.android.com/reference/androidx/lifecycle/ViewModel` is created within the returned `https://developer.android.com/reference/androidx/lifecycle/ViewModelStore`.

`https://developer.android.com/reference/androidx/lifecycle/ViewModelLazy#factoryProducer()` is a lambda called during initialization; the returned `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` is used to create the `https://developer.android.com/reference/androidx/lifecycle/ViewModel`.

`https://developer.android.com/reference/androidx/lifecycle/ViewModelLazy#extrasProducer()` is a lambda called during initialization; the returned `https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras` are used during the creation of the `https://developer.android.com/reference/androidx/lifecycle/ViewModel`.

## Summary

| ### Public constructors |
|---|
| `<VM extends https://developer.android.com/reference/androidx/lifecycle/ViewModel> https://developer.android.com/reference/androidx/lifecycle/ViewModelLazy#ViewModelLazy(kotlin.reflect.KClass,kotlin.Function0,kotlin.Function0,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull VM> viewModelClass, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/ViewModelStore> storeProducer, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory> factoryProducer, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras> extrasProducer )` |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull VM` | `https://developer.android.com/reference/androidx/lifecycle/ViewModelLazy#getValue()()` |
| `boolean` | `https://developer.android.com/reference/androidx/lifecycle/ViewModelLazy#isInitialized()()` |

## Public constructors

### ViewModelLazy

```
public <VM extends ViewModel> ViewModelLazy(
    @NonNull KClass<@NonNull VM> viewModelClass,
    @NonNull Function0<@NonNull ViewModelStore> storeProducer,
    @NonNull Function0<@NonNull ViewModelProvider.Factory> factoryProducer,
    @NonNull Function0<@NonNull CreationExtras> extrasProducer
)
```

## Public methods

### getValue

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

```
public @NonNull VM getValue()
```

### isInitialized

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

```
public boolean isInitialized()
```