Sono molto confuso a causa di questo nuovo API ViewModelProvider (ViewModelProviders è deprecato)
Come per le nuove modifiche ci sono anche nuovi costruttori (codice sorgente).
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;
}
Dipendenza dal grado:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
Quindi questi costruttori richiedono ViewModelStore
e viewModelStoreOwner
.
Doc:
@param store {@code ViewModelStore} dove verranno archiviati ViewModels.
@param proprietario di un {@code ViewModelStoreOwner} il cui {@link ViewModelStore} verrà utilizzato per conservare {@code ViewModels}
Qualcuno può definirli e come usarli e cosa significano veramente per noi sviluppatori?
è ViewModelStoreOwner == attività / frammento?