Где инициализировать экземпляр с параметром View в архитектуре MVVM - PullRequest
0 голосов
/ 10 июня 2018

Я работаю над переписыванием своего приложения в архитектуру MVVM.Исходя из моего понимания, вся бизнес-логика должна существовать в ViewModel, а компоненты пользовательского интерфейса - в Activity или Fragment.Я использую стороннюю библиотеку, которую нужно инициализировать с помощью некоторых представлений, например: MyLibrary instance = new MyLibrary ("key" , imageView, surfaceView), а затем выполняю некоторые манипуляции с этими представлениями.

Что было бы лучшим местом и правильным способом сделать это, зная, что это не так?Рекомендуется передать любой вид Android на ViewModel, а также не правильно инициализировать SDK в Activity

1 Ответ

0 голосов
/ 18 июня 2018

Вы уже ответили на свой вопрос.С другой стороны, ViewModel сообщает View (действия и фрагмент), ЧТО должно быть изменено, и View просто обрабатывает, КАК это должно быть обновлено.

Однако большая часть бизнес-логики, если мы хотим бытьНитпки, все равно должен оставаться в модели.ViewModel содержит только те данные LiveData, которые необходимы представлению.Некоторые причины этого заключаются в том, что вы не хотите, чтобы ваша модель зависела от архитектуры Android.Но также следовать принципу единой цели.Таким образом, вы избегаете превращения ViewModel в объект God, который обрабатывает все.Вместо этого вы разрешаете ему только форматировать данные, передавать команды, предоставлять фабричные методы для привязки к viewModel и подписки / получения соответствующих изменений из модели.

Короче говоря: View передает пользовательский ввод в ViewModelкто выдает команды на модели.Затем ViewModel форматирует изменения из модели и публикует изменения, используя LiveData, в представление.Наконец, представление обновляет компоненты, которые может видеть пользователь.

Посмотрите здесь пример того, как обновляется пользовательский интерфейс.https://developer.android.com/topic/libraries/architecture/viewmodel

Подробнее об этом здесь: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel

...