Estou muito confuso devido a esta nova API do ViewModelProvider (o ViewModelProviders foi descontinuado)
Assim como nas novas mudanças, também existem novos construtores (código-fonte).
# 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;
}
Dependência Gradle:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
Portanto, esses construtores exigem ViewModelStore
e viewModelStoreOwner
.
Doc:
@param store {@code ViewModelStore} onde os ViewModels serão armazenados.
proprietário do @param, um {@code ViewModelStoreOwner} cujo {@link ViewModelStore} será usado para manter {@code ViewModels}
Alguém pode defini-los e como usá-los e o que eles realmente significam para nós, desenvolvedores?
é ViewModelStoreOwner == atividade / fragmento?