Ich bin aufgrund dieser neuen ViewModelProvider-API sehr verwirrt (ViewModelProviders ist veraltet)
Wie bei den neuen Änderungen gibt es auch hier neue Konstruktoren (Quellcode).
# 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-Abhängigkeit:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
Also diese Konstrukteure benötigen ViewModelStore
und viewModelStoreOwner
.
Doc:
@param store {@code ViewModelStore}, in dem ViewModels gespeichert werden.
@param Eigentümer ein {@code ViewModelStoreOwner}, dessen {@link ViewModelStore} verwendet wird, um {@code ViewModels} beizubehalten
Kann jemand sie definieren und wie man sie benutzt und was sie für uns Entwickler wirklich bedeuten?
ist ViewModelStoreOwner == Aktivität / Fragment?