# ViewModelProvider

added in[version 1.0.0](https://developer.android.com/topic/libraries/support-library/revisions)  
belongs to Maven artifact android.arch.lifecycle:viewmodel:1.1.1  
Summary:[Nested Classes](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#nestedclasses)\|[Ctors](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#pubctors)\|[Methods](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#inhmethods)  

# ViewModelProvider

| The`android.arch`Architecture Components packages are no longer maintained. They have been superseded by the corresponding[androidx.\*](https://developer.android.com/jetpack/androidx/migrate)packages. See[androidx.lifecycle.ViewModelProvider](https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider)instead.

`
public


class
ViewModelProvider
`  
`

extends Object


``


`

|---|------------------------------------------|
| java.lang.Object                            ||
| ↳ | android.arch.lifecycle.ViewModelProvider |

<br />

*** ** * ** ***

An utility class that provides`ViewModels`for a scope.

Default`ViewModelProvider`for an`Activity`or a`Fragment`can be obtained from[ViewModelProviders](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders)class.

## Summary

|                                                                                                                                                                                                                                                           ### Nested classes                                                                                                                                                                                                                                                           ||
|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` class`     | [ViewModelProvider.AndroidViewModelFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.AndroidViewModelFactory) [ViewModelProvider.Factory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.Factory)which may create[AndroidViewModel](https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel)and[ViewModel](https://developer.android.com/reference/android/arch/lifecycle/ViewModel), which have an empty constructor. |
| ` interface` | [ViewModelProvider.Factory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.Factory) Implementations of`Factory`interface are responsible to instantiate ViewModels.                                                                                                                                                                                                                                                                                                                    |
| ` class`     | [ViewModelProvider.NewInstanceFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.NewInstanceFactory) Simple factory, which calls empty constructor on the give class.                                                                                                                                                                                                                                                                                                             |

|                                                                                                                                                                                                                                                                                                     ### Public constructors                                                                                                                                                                                                                                                                                                     ||
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[ViewModelProvider](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#ViewModelProvider(android.arch.lifecycle.ViewModelStoreOwner, android.arch.lifecycle.ViewModelProvider.Factory))`(`[ViewModelStoreOwner](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStoreOwner)` owner, `[ViewModelProvider.Factory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.Factory)` factory) ` Creates`ViewModelProvider`, which will create`ViewModels`via the given`Factory`and retain them in a store of the given`ViewModelStoreOwner`. |
| ` `[ViewModelProvider](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#ViewModelProvider(android.arch.lifecycle.ViewModelStore, android.arch.lifecycle.ViewModelProvider.Factory))`(`[ViewModelStore](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStore)` store, `[ViewModelProvider.Factory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.Factory)` factory) ` Creates`ViewModelProvider`, which will create`ViewModels`via the given`Factory`and retain them in the given`store`.                                         |

|                                                                                                                                                                                                        ### Public methods                                                                                                                                                                                                         ||
|----------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` <T extends `[ViewModel](https://developer.android.com/reference/android/arch/lifecycle/ViewModel)`> T` | ` `[get](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#get(java.lang.Class<T>))`(Class<T> modelClass) ` Returns an existing ViewModel or creates a new one in the scope (usually, a fragment or an activity), associated with this`ViewModelProvider`.                               |
| ` <T extends `[ViewModel](https://developer.android.com/reference/android/arch/lifecycle/ViewModel)`> T` | ` `[get](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider#get(java.lang.String, java.lang.Class<T>))`(String key, Class<T> modelClass) ` Returns an existing ViewModel or creates a new one in the scope (usually, a fragment or an activity), associated with this`ViewModelProvider`. |

| ### Inherited methods |
|-----------------------|---|
| From class` java.lang.Object ` |-------------------|-------------------------------| | ` Object`         | ` clone() `                   | | ` boolean`        | ` equals(Object arg0) `       | | ` void`           | ` finalize() `                | | ` final Class<?>` | ` getClass() `                | | ` int`            | ` hashCode() `                | | ` final void`     | ` notify() `                  | | ` final void`     | ` notifyAll() `               | | ` String`         | ` toString() `                | | ` final void`     | ` wait(long arg0, int arg1) ` | | ` final void`     | ` wait(long arg0) `           | | ` final void`     | ` wait() `                    | ||

## Public constructors

### ViewModelProvider

added in[version 1.0.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
ViewModelProvider (ViewModelStoreOwner owner, 
                ViewModelProvider.Factory factory)
```

Creates`ViewModelProvider`, which will create`ViewModels`via the given`Factory`and retain them in a store of the given`ViewModelStoreOwner`.

<br />

|                                                                                              Parameters                                                                                               ||
|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `owner`   | `ViewModelStoreOwner`: a`ViewModelStoreOwner`whose[ViewModelStore](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStore)will be used to retain`ViewModels` <br /> |
| `factory` | `ViewModelProvider.Factory`: a`Factory`which will be used to instantiate new`ViewModels` <br />                                                                                            |

### ViewModelProvider

added in[version 1.0.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
ViewModelProvider (ViewModelStore store, 
                ViewModelProvider.Factory factory)
```

Creates`ViewModelProvider`, which will create`ViewModels`via the given`Factory`and retain them in the given`store`.

<br />

|                                                     Parameters                                                     ||
|-----------|---------------------------------------------------------------------------------------------------------|
| `store`   | `ViewModelStore`:`ViewModelStore`where ViewModels will be stored. <br />                                |
| `factory` | `ViewModelProvider.Factory`: factory a`Factory`which will be used to instantiate new`ViewModels` <br /> |

## Public methods

### get

added in[version 1.0.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
T get (Class<T> modelClass)
```

Returns an existing ViewModel or creates a new one in the scope (usually, a fragment or an activity), associated with this`ViewModelProvider`.

The created ViewModel is associated with the given scope and will be retained as long as the scope is alive (e.g. if it is an activity, until it is finished or process is killed).

<br />

|                                                 Parameters                                                 ||
|--------------|----------------------------------------------------------------------------------------------|
| `modelClass` | `Class`: The class of the ViewModel to create an instance of it if it is not present. <br /> |

|                              Returns                              ||
|-----|--------------------------------------------------------------|
| `T` | A ViewModel that is an instance of the given type`T`. <br /> |

### get

added in[version 1.0.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
T get (String key, 
                Class<T> modelClass)
```

Returns an existing ViewModel or creates a new one in the scope (usually, a fragment or an activity), associated with this`ViewModelProvider`.

The created ViewModel is associated with the given scope and will be retained as long as the scope is alive (e.g. if it is an activity, until it is finished or process is killed).

<br />

|                                                 Parameters                                                 ||
|--------------|----------------------------------------------------------------------------------------------|
| `key`        | `String`: The key to use to identify the ViewModel. <br />                                   |
| `modelClass` | `Class`: The class of the ViewModel to create an instance of it if it is not present. <br /> |

|                              Returns                              ||
|-----|--------------------------------------------------------------|
| `T` | A ViewModel that is an instance of the given type`T`. <br /> |

-

  ## Annotations

  - [OnLifecycleEvent](https://developer.android.com/reference/android/arch/lifecycle/OnLifecycleEvent)
-

  ## Interfaces

  - [DefaultLifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/DefaultLifecycleObserver)
  - [LifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/LifecycleObserver)
  - [LifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner)
  - [LifecycleRegistryOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleRegistryOwner)
  - [Observer](https://developer.android.com/reference/android/arch/lifecycle/Observer)
  - [ViewModelProvider.Factory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.Factory)
  - [ViewModelStoreOwner](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStoreOwner)
-

  ## Classes

  - [AndroidViewModel](https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel)
  - [Lifecycle](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle)
  - [LifecycleRegistry](https://developer.android.com/reference/android/arch/lifecycle/LifecycleRegistry)
  - [LifecycleService](https://developer.android.com/reference/android/arch/lifecycle/LifecycleService)
  - [LiveData](https://developer.android.com/reference/android/arch/lifecycle/LiveData)
  - [LiveDataReactiveStreams](https://developer.android.com/reference/android/arch/lifecycle/LiveDataReactiveStreams)
  - [MediatorLiveData](https://developer.android.com/reference/android/arch/lifecycle/MediatorLiveData)
  - [MutableLiveData](https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData)
  - [ProcessLifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/ProcessLifecycleOwner)
  - [ServiceLifecycleDispatcher](https://developer.android.com/reference/android/arch/lifecycle/ServiceLifecycleDispatcher)
  - [Transformations](https://developer.android.com/reference/android/arch/lifecycle/Transformations)
  - [ViewModel](https://developer.android.com/reference/android/arch/lifecycle/ViewModel)
  - [ViewModelProvider](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider)
  - [ViewModelProvider.AndroidViewModelFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.AndroidViewModelFactory)
  - [ViewModelProvider.NewInstanceFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.NewInstanceFactory)
  - [ViewModelProviders](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders)
  - [ViewModelProviders.DefaultFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.DefaultFactory)
  - [ViewModelStore](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStore)
  - [ViewModelStores](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStores)
-

  ## Enums

  - [Lifecycle.Event](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event)
  - [Lifecycle.State](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State)