# AndroidViewModel

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

*** ** * ** ***

Common/AllAndroid/JVM
- android

  ```
  open class AndroidViewModel : ViewModel
  ```

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

*** ** * ** ***

`https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` that has access to the `https://developer.android.com/reference/android/app/Application.html` context.

Subclasses must have a constructor that accepts `https://developer.android.com/reference/android/app/Application.html` as the only parameter.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` |   |

## Summary

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel#AndroidViewModel(android.app.Application)(application: https://developer.android.com/reference/android/app/Application.html)` | android |

| ### Public functions |
|---|---|---|
| `open T` | `<T : https://developer.android.com/reference/android/app/Application.html> https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel#getApplication()()` Returns the `https://developer.android.com/reference/android/app/Application.html` instance. | android |

| ### Extension properties |
|---|---|---|
| `https://developer.android.com/reference/android/app/Application.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel.https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel#(androidx.lifecycle.AndroidViewModel).application()` Returns the underlying `https://developer.android.com/reference/android/app/Application.html` of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel`. | android |

### Inherited functions

From [androidx.lifecycle.ViewModel](https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel) `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel#addCloseable(java.lang.AutoCloseable)(closeable: https://developer.android.com/reference/java/lang/AutoCloseable.html)`

Adds an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-auto-closeable/index.html` resource to this `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`.
android `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel#addCloseable(kotlin.String,java.lang.AutoCloseable)(key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, closeable: https://developer.android.com/reference/java/lang/AutoCloseable.html)`

Adds an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-auto-closeable/index.html` resource with an associated `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel#addCloseable(kotlin.String,kotlin.AutoCloseable)` to this `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`.
android `T?` `<T : https://developer.android.com/reference/java/lang/AutoCloseable.html> https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel#getCloseable(kotlin.String)(key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`

Returns the `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-auto-closeable/index.html` resource associated to the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel#getCloseable(kotlin.String)`, or `null` if such a `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel#getCloseable(kotlin.String)` is not present in this `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`.
android `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/EmptySuper
https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel#onCleared()()`

This method will be called when this `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel` is no longer used and will be destroyed.
android

## Public constructors

### AndroidViewModel

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

```
AndroidViewModel(application: Application)
```

## Public functions

### getApplication

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

```
open fun <T : Application> getApplication(): T
```

Returns the `https://developer.android.com/reference/android/app/Application.html` instance.

## Extension properties

### AndroidViewModel.application

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

```
val AndroidViewModel.application: Application
```

Returns the underlying `https://developer.android.com/reference/android/app/Application.html` of the `https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel`.

Works around a Kotlin compilation issue where class hierarchies extending `https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel` (e.g., `KotlinViewModel` extending `JavaViewModel` extending `https://developer.android.com/reference/kotlin/androidx/lifecycle/AndroidViewModel`) incorrectly expose the private `application` property.