Estoy muy confundido debido a esta nueva API ViewModelProvider (ViewModelProviders está en desuso)
Al igual que con los nuevos cambios, también hay nuevos constructores (código fuente).
# 1
public ViewModelProvider(@NonNull ViewModelStoreOwner owner) {
this(owner.getViewModelStore(), owner instanceof HasDefaultViewModelProviderFactory
? ((HasDefaultViewModelProviderFactory) owner).getDefaultViewModelProviderFactory()
: NewInstanceFactory.getInstance());
}
# 2
public ViewModelProvider(@NonNull ViewModelStoreOwner owner, @NonNull Factory factory) {
this(owner.getViewModelStore(), factory);
}
# 3
public ViewModelProvider(@NonNull ViewModelStore store, @NonNull Factory factory) {
mFactory = factory;
mViewModelStore = store;
}
Dependencia de Gradle:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
Entonces estos constructores requieren ViewModelStore
y viewModelStoreOwner
.
Doc:
@param store {@code ViewModelStore} donde se guardarán los ViewModels.
@param propietario de un {@code ViewModelStoreOwner} cuyo {@link ViewModelStore} se utilizará para retener {@code ViewModels}
¿Alguien puede definirlos y cómo usarlos y lo que realmente significan para nosotros, los desarrolladores?
¿ViewModelStoreOwner == actividad / fragmento?