ViewModelFactory нужно - PullRequest
       7

ViewModelFactory нужно

2 голосов
/ 05 апреля 2020

Я делаю некоторые кодовые метки из kotlin основы , и я действительно не вхожу в android с ViewModel, почему иногда возникает необходимость создания его через ViewModelFactory. Здесь вы можете увидеть кодовую метку , которая говорит об этом.

Они просто говорят, чтобы выполнить инициализацию, используя шаблон метода фабрики , но я не не понимаю почему. Почему нам нужно использовать фабричный шаблон? Это потому, что нам нужно передать какой-то параметр в ViewModel? Или это по какой-то другой причине? Каждый раз, когда нам нужно создать ViewModelFactory просто для передачи параметров в ViewModel?

Я искал ответ, пытаясь подтвердить, является ли это просто передачей дополнительных параметров или по какой-либо другой причине, кроме все же я не уверен, и я не нашел ответ.

1 Ответ

1 голос
/ 05 апреля 2020

Есть несколько вещей, которые необходимо учитывать перед использованием ViewModel и ViewModelFactory

  1. ViewModel - это LifecycleAware Components.
  2. ViewModel выжить configuration изменения.
  3. ViewModelProvider' can only instantiate ViewModel` с конструктором без аргументов.

Зачем нам нужен фабричный шаблон?

Для создания экземпляра ViewModel с аргументами необходимо использовать ViewModelFactory. ViewModelProviders Утилита не может создать экземпляр ViewModel с помощью конструктора аргументов, поскольку она не знает, как и какие объекты передавать в конструктор.

Кроме того, вы должны следовать принципу внедрения зависимостей. Класс не должен создавать зависимости, в которых он нуждается. Оно должно быть предоставлено, а не создано.

Например -

public class LogInViewModel extends ViewModel {
    private final LogInRepo repo;
    public LogInViewModel (LogInRepo repo) {
         /* this.repo = new LogInRepo(); Not recommended, It violates DI principle*/
         this.repo = repo;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...