Отличается ли ViewModel с LiveData от ViewModel без LiveData? - PullRequest
0 голосов
/ 23 февраля 2019

Я прочитал много уроков о viewmodel и livingata, но я не получаю фактически использования livingata в классе viewmodel в шаблоне mvvm.заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Согласно Документам Google, если вы уже используете библиотеки, такие как Rx или Agera, вы можете продолжать использовать их вместо LiveData.Но в этом случае вы несете ответственность за распределение и удаление объектов в течение жизненного цикла компонентов Android.

При работе с шаблоном MVVM, поскольку viewmodel не имеет ссылки на представление, вам потребуетсяНаблюдаемый держатель данных для наблюдения за изменениями, чтобы вы могли должным образом обновить свое представление.

В этом случае вы можете использовать liveata, один из компонентов архитектуры или любой другой наблюдаемый, например, из Rx.

Основное различие состоит в том, что жизненные циклы жизненных циклов Android уважают, а наблюдаемые rx - нет.

В случае с жизненными циклами сбой не произошел бы из-за прекращения активности при вызове onChange, поскольку он осведомлен о жизненном цикле.Но без санатория вам решать этот случай.

0 голосов
/ 23 февраля 2019

Шаблон MVVM предназначен только для опускания V -> VM -> M и реагирования на M -> VM -> V. Это означает, что View может вызывать методы в ViewModel, но ViewModel не имеет ссылки на View.вызывать методы на нем (задавать данные).Способ связи между ViewModel и View - это просмотр View с помощью некоторой переменной (ObservableField, LiveData, RxJava и т. Д.).

LiveData - это отличный наблюдаемый объект, обеспечивающий связь между viewModel и View, особенно при изменении состояния, например при вращении.Он также обеспечивает отличную связь между моделью и представлением в отношении изменений базы данных и помещения.

...