# 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)

*** ** * ** ***

Common/AllAndroid/JVM
- Cmn

  ```
  class ViewModelLazy<VM : ViewModel> : Lazy<VM>
  ```

*** ** * ** ***

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

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

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

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

## Summary

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

| ### Public functions |
|---|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelLazy#isInitialized()()` | Cmn |

| ### Public properties |
|---|---|---|
| `open VM` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelLazy#value()` | Cmn |

## Public constructors

### ViewModelLazy

Cmn

```
<VM : ViewModel> ViewModelLazy(
    viewModelClass: KClass<VM>,
    storeProducer: () -> ViewModelStore,
    factoryProducer: () -> ViewModelProvider.Factory,
    extrasProducer: () -> CreationExtras = { CreationExtras.Empty }
)
```

## Public functions

### isInitialized

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

```
open fun isInitialized(): Boolean
```

## Public properties

### value

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

```
open val value: VM
```