get (MyViewModel.class)
Возвращает существующую ViewModel или создает новую в области (обычно это фрагмент или действие), связанную с этим. Созданная ViewModelсвязан с данной областью действия и будет сохраняться до тех пор, пока область остается активной (например, если это действие, пока оно не завершено или процесс не завершен)
public <T extends ViewModel> T get(@NonNull Class<T> modelClass) {
String canonicalName = modelClass.getCanonicalName();
if (canonicalName == null) {
throw new IllegalArgumentException("Local and anonymous classes can not be ViewModels");
}
return get(DEFAULT_KEY + ":" + canonicalName, modelClass);
}
если мы продолжим исследование, get (String key, Class modelClass) метод с двумя параметрами возвращает представление модели.Вы можете увидеть в функции, если модель представления существует, она вернется, в противном случае она создаст новую.
public <T extends ViewModel> T get(@NonNull String key, @NonNull Class<T> modelClass) {
ViewModel viewModel = mViewModelStore.get(key);
if (modelClass.isInstance(viewModel)) {
//noinspection unchecked
return (T) viewModel;
} else {
//noinspection StatementWithEmptyBody
if (viewModel != null) {
// TODO: log a warning.
}
}
viewModel = mFactory.create(modelClass);
mViewModelStore.put(key, viewModel);
//noinspection unchecked
return (T) viewModel;
}
Вот ссылка