Я очень смущен из-за этого нового API ViewModelProvider (ViewModelProviders устарела)
Как и с новыми изменениями, появляются и новые Конструкторы (Исходный код).
# 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:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
Так что эти конструктор требуют ViewModelStore
и viewModelStoreOwner
.
Doc:
@param store {@code ViewModelStore}, где будут храниться ViewModels.
@param owner {@code ViewModelStoreOwner}, чей {@link ViewModelStore} будет использоваться для сохранения {@code ViewModels}
Может кто-нибудь определить их и как их использовать и что они действительно значат для нас, разработчиков?
такое ViewModelStoreOwner == активность / фрагмент?