I am very confused due to this new ViewModelProvider api(ViewModelProviders is deprecated)
As with the new changes there are new Constructors also (Source code).
#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;
}
Gradle Depenedency:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
So These Constructor's require ViewModelStore
and viewModelStoreOwner
.
Doc:
@param store {@code ViewModelStore} where ViewModels will be stored.
@param owner a {@code ViewModelStoreOwner} whose {@link ViewModelStore} will be used to retain {@code ViewModels}
Can anyone define them and how to use them and what they really mean to us developer's?
is ViewModelStoreOwner==activity/fragment?