AbstractSavedStateViewModelFactory



Abstract ViewModelProvider.Factory that creates a SavedStateHandle for every requested ViewModel.

Subclasses implement the abstract create method to instantiate ViewModels.

Deprecated: Use viewModelFactory or implement ViewModelProvider.Factory directly, combined with CreationExtras.createSavedStateHandle. This base class creates a SavedStateHandle for every ViewModel, even when unnecessary, causing overhead.

For example:

viewModelFactory { initializer { MyViewModel(createSavedStateHandle()) } }

Summary

Public constructors

This function is deprecated. Use `viewModelFactory` or implement `ViewModelProvider.Factory`, combined with `CreationExtras.createSavedStateHandle()`.

android
AbstractSavedStateViewModelFactory(
    owner: SavedStateRegistryOwner,
    defaultArgs: Bundle?
)

This function is deprecated. Use `viewModelFactory` or implement `ViewModelProvider.Factory`, combined with `CreationExtras.createSavedStateHandle()`.

android

Public functions

open T
<T : ViewModel> create(modelClass: Class<T>)

This function is deprecated. Use `viewModelFactory` or implement `ViewModelProvider.Factory`, combined with `CreationExtras.createSavedStateHandle()`.

android
open T
<T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras)

This function is deprecated. Use `viewModelFactory` or implement `ViewModelProvider.Factory`, combined with `CreationExtras.createSavedStateHandle()`.

android

Protected functions

abstract T
<T : ViewModel> create(
    key: String,
    modelClass: Class<T>,
    handle: SavedStateHandle
)

This function is deprecated. Use `viewModelFactory` or implement `ViewModelProvider.Factory`, combined with `CreationExtras.createSavedStateHandle()`.

android

Inherited functions

From androidx.lifecycle.ViewModelProvider.Factory
open T
<T : ViewModel> create(modelClass: KClass<T>, extras: CreationExtras)

This function is deprecated. Use `viewModelFactory` or implement `ViewModelProvider.Factory`, combined with `CreationExtras.createSavedStateHandle()`.

android

Public constructors

AbstractSavedStateViewModelFactory

AbstractSavedStateViewModelFactory()

Constructs a new AbstractSavedStateViewModelFactory.

When constructed this way, the component for which the SavedStateHandle is scoped must have called enableSavedStateHandles. See CreationExtras.createSavedStateHandle for more details.

AbstractSavedStateViewModelFactory

AbstractSavedStateViewModelFactory(
    owner: SavedStateRegistryOwner,
    defaultArgs: Bundle?
)

Constructs a new AbstractSavedStateViewModelFactory.

Parameters
owner: SavedStateRegistryOwner

SavedStateRegistryOwner that will provide restored state for created ViewModels. Must implement ViewModelStoreOwner to support state retention.

defaultArgs: Bundle?

default values to populate the SavedStateHandle if no state is restored

Throws
IllegalArgumentException

if the owner does not implement ViewModelStoreOwner

Public functions

create

open fun <T : ViewModel> create(modelClass: Class<T>): T

Creates a new instance of the given Class.

Parameters
modelClass: Class<T>

Class of the ViewModel to create

Returns
T

new ViewModel instance of type T

Throws
IllegalArgumentException

if the given modelClass is a local or anonymous class

UnsupportedOperationException

if this factory was constructed with the empty constructor, and therefore has no SavedStateRegistryOwner

create

open fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T

Creates a new instance of the given Class.

Parameters
modelClass: Class<T>

Class of the ViewModel to create

extras: CreationExtras

CreationExtras passed to the Factory to create the ViewModel

Returns
T

new ViewModel instance of type T

Protected functions

create

protected abstract fun <T : ViewModel> create(
    key: String,
    modelClass: Class<T>,
    handle: SavedStateHandle
): T

Creates a new instance of the given Class.

Parameters
key: String

key associated with the requested ViewModel

modelClass: Class<T>

Class of the ViewModel to create

handle: SavedStateHandle

SavedStateHandle associated with the ViewModel to create

Returns
T

new ViewModel instance of type T