AbstractSavedStateViewModelFactory


public abstract class AbstractSavedStateViewModelFactory implements ViewModelProvider.Factory


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 method is deprecated. Use `viewModelFactory` or implement `ViewModelProvider.Factory`, combined with `CreationExtras.createSavedStateHandle()`.

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

Public methods

@NonNull T
<T extends ViewModel> create(@NonNull Class<@NonNull T> modelClass)

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

@NonNull T
<T extends ViewModel> create(
    @NonNull Class<@NonNull T> modelClass,
    @NonNull CreationExtras extras
)

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

Protected methods

abstract @NonNull T
<T extends ViewModel> create(
    @NonNull String key,
    @NonNull Class<@NonNull T> modelClass,
    @NonNull SavedStateHandle handle
)

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

Inherited methods

From androidx.lifecycle.ViewModelProvider.Factory
@NonNull T
<T extends ViewModel> create(
    @NonNull KClass<@NonNull T> modelClass,
    @NonNull CreationExtras extras
)

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

Public constructors

AbstractSavedStateViewModelFactory

Added in 2.5.0
Deprecated in 2.9.0
public 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

Added in 2.3.0
Deprecated in 2.9.0
public AbstractSavedStateViewModelFactory(
    @NonNull SavedStateRegistryOwner owner,
    Bundle defaultArgs
)

Constructs a new AbstractSavedStateViewModelFactory.

Parameters
@NonNull SavedStateRegistryOwner owner

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

Bundle defaultArgs

default values to populate the SavedStateHandle if no state is restored

Throws
IllegalArgumentException

if the owner does not implement ViewModelStoreOwner

Public methods

create

Added in 2.3.0
public @NonNull T <T extends ViewModel> create(@NonNull Class<@NonNull T> modelClass)

Creates a new instance of the given Class.

Parameters
@NonNull Class<@NonNull T> modelClass

Class of the ViewModel to create

Returns
@NonNull 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

Added in 2.5.0
public @NonNull T <T extends ViewModel> create(
    @NonNull Class<@NonNull T> modelClass,
    @NonNull CreationExtras extras
)

Creates a new instance of the given Class.

Parameters
@NonNull Class<@NonNull T> modelClass

Class of the ViewModel to create

@NonNull CreationExtras extras

CreationExtras passed to the Factory to create the ViewModel

Returns
@NonNull T

new ViewModel instance of type T

Protected methods

create

Added in 2.3.0
Deprecated in 2.9.0
protected abstract @NonNull T <T extends ViewModel> create(
    @NonNull String key,
    @NonNull Class<@NonNull T> modelClass,
    @NonNull SavedStateHandle handle
)

Creates a new instance of the given Class.

Parameters
@NonNull String key

key associated with the requested ViewModel

@NonNull Class<@NonNull T> modelClass

Class of the ViewModel to create

@NonNull SavedStateHandle handle

SavedStateHandle associated with the ViewModel to create

Returns
@NonNull T

new ViewModel instance of type T