Обработка ошибок с компонентами архитектуры Android и MVVM

Я прочитал руководство по архитектуре для Android здесь: https://developer.android.com/jetpack/docs/guide

Я использую эту архитектуру в своем проекте, но понятия не имею, как обрабатывать ошибки.

Например, когда я получаю строку ошибки в классе репозитория из сетевого вызова, как я могу передать это в viewModel, а затем в представление и отобразить ошибку?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
888
1

Ответы 1

В архитектуре MVVM ViewModel не должен иметь доступа к представлению, то есть к активности. Итак, для распространения ошибки из класса Repo в ViewModel используйте обратный вызов интерфейса, поскольку модель просмотра инициирует вызов в классе репозитория. Как только вы получите ошибку в модели просмотра, используйте Livedata в модели просмотра и измените значение. Действие может прослушивать изменения и действовать соответственно или использовать привязку данных для непосредственного изменения представления из модели представления. Для последнего Livedata может быть строкой, и вы можете передать это значение Livedata в виде текста текстового просмотра. Для первого Livedata будет логическим, которое при изменении активности будет обрабатывать его.

Другие вопросы по теме