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

*** ** * ** ***


```
public class AndroidViewModel extends ViewModel
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.lifecycle.ViewModel](https://developer.android.com/reference/androidx/lifecycle/ViewModel) ||
|   | ↳ | [androidx.lifecycle.AndroidViewModel](https://developer.android.com/reference/androidx/lifecycle/AndroidViewModel) |

*** ** * ** ***

`https://developer.android.com/reference/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/androidx/lifecycle/ViewModel` |   |

## Summary

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

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T` | `<T extends https://developer.android.com/reference/android/app/Application.html> https://developer.android.com/reference/androidx/lifecycle/AndroidViewModel#getApplication()()` Returns the `https://developer.android.com/reference/android/app/Application.html` instance. |

| ### Extension functions |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/app/Application.html` | `https://developer.android.com/reference/androidx/lifecycle/AndroidViewModelKt.https://developer.android.com/reference/androidx/lifecycle/AndroidViewModel#(androidx.lifecycle.AndroidViewModel).getApplication()(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/AndroidViewModel receiver)` Returns the underlying `https://developer.android.com/reference/android/app/Application.html` of the `https://developer.android.com/reference/androidx/lifecycle/AndroidViewModel`. |

### Inherited methods

From [androidx.lifecycle.ViewModel](https://developer.android.com/reference/androidx/lifecycle/ViewModel) `void` `https://developer.android.com/reference/androidx/lifecycle/ViewModel#addCloseable(java.lang.AutoCloseable)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/AutoCloseable.html closeable)`

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

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

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

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

## Public constructors

### AndroidViewModel

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

```
public AndroidViewModel(@NonNull Application application)
```

## Public methods

### getApplication

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

```
public @NonNull T <T extends Application> getApplication()
```

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

## Extension functions

### AndroidViewModelKt.getApplication

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)

```
public final @NonNull Application AndroidViewModelKt.getApplication(@NonNull AndroidViewModel receiver)
```

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

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