Jestem bardzo zdezorientowany z powodu tego nowego API ViewModelProvider (ViewModelProviders jest przestarzały)
Podobnie jak w przypadku nowych zmian, pojawiły się również nowe Konstruktory (kod źródłowy).
# 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;
}
Stopień Zależności:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
Więc te Konstruktory wymagają ViewModelStore
i viewModelStoreOwner
.
Dokument:
@param store {@code ViewModelStore}, w którym będą przechowywane ViewModels.
@param jest właścicielem {@code ViewModelStoreOwner}, którego {@link ViewModelStore} zostanie wykorzystany do zachowania {@code ViewModels}
Czy każdy może je zdefiniować i jak z nich korzystać oraz co tak naprawdę oznaczają dla nas, dewelopera?
jest ViewModelStoreOwner == aktywność / fragment?