Je suis très confus à cause de cette nouvelle API ViewModelProvider (ViewModelProviders est déconseillé)
Comme pour les nouvelles modifications, il existe également de nouveaux constructeurs (code source).
#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;
}
Dépendance Gradle:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
Donc, ces constructeurs exigent ViewModelStore
et viewModelStoreOwner
.
Doc:
@param store {@code ViewModelStore} où ViewModels sera stocké.
@param propriétaire un {@code ViewModelStoreOwner} dont {@link ViewModelStore} sera utilisé pour conserver {@code ViewModels}
Quelqu'un peut-il les définir et comment les utiliser et ce qu'ils signifient vraiment pour nous, développeur?
est ViewModelStoreOwner == activité / fragment?