Что такое архитектура и зачем она нужна?

Архитектура — это то, как вы структурируете код и файлы Android. Очень важно сделать ваш проект масштабируемым и поддерживать его. Разработчики тратят больше времени на поддержку проекта, чем на его создание, поэтому архитектура должна быть чистой и простой в обслуживании. Обычно на создание проекта с нуля требуются месяцы, но с годами в него добавляются различные дополнения в виде исправлений ошибок и новых функций в зависимости от требований.

МВК против МВВМ?

MVC — это архитектура Android по умолчанию, где представление — это файлы макета xml, а контроллер — класс Activity. В MVVM файлы активности и xml рассматриваются как представления, а класс Viewmodel состоит из всей вашей бизнес-логики. Нет никакой связи между пользовательским интерфейсом приложения и бизнес-логикой.

MVP VS MVVM?

В MVP ведущий знает о представлении, а представление знает о докладчике. Они взаимодействуют друг с другом через интерфейс. В MVVM только представление знает о модели представления. Модель представления не имеет представления о представлении.

Какая цель здесь?

Распространенной ошибкой является написание всего кода в Activity или Fragment. Эти классы на основе пользовательского интерфейса должны содержать только логику, обрабатывающую взаимодействие пользовательского интерфейса и операционной системы. Сохраняя эти классы как можно более компактными, вы можете избежать многих проблем, связанных с жизненным циклом.

Самый важный принцип, которому нужно следовать, — это разделение задач, т. е. ваша бизнес-логика, пользовательский интерфейс и модели данных должны находиться в разных местах. Другим является разделение кода: каждый фрагмент кода должен действовать как черный ящик, чтобы изменение чего-либо в классе не должно было повлиять на другую часть вашей кодовой базы.

Что такое МВВМ?

Архитектура MVVM представляет собой архитектуру Model-View-ViewModel, которая устраняет тесную связь между каждым компонентом. Самое главное, что в этой архитектуре у детей нет прямой ссылки на родителя, у них есть только ссылка через наблюдаемые объекты.

Модель.
Модель представляет данные и бизнес-логику приложения. Одной из рекомендуемых реализаций этого является предоставление своих данных через observable. В отличие от обычного наблюдаемого, LiveData учитывает жизненный цикл других компонентов приложения, таких как действия и фрагменты.

ViewModel:
класс ViewModel предназначен для хранения и управления данными, связанными с пользовательским интерфейсом, с учетом жизненного цикла. ViewModel не должен знать о взаимодействующем представлении. Класс ViewModel позволяет данным пережить изменения конфигурации, такие как повороты экрана.

Представление.
Представление относится к компоненту пользовательского интерфейса приложения, т. е. активности и фрагментам. Роль представления в этом шаблоне заключается в наблюдении за наблюдаемой моделью представления для получения данных для соответствующего обновления элементов пользовательского интерфейса. Эта часть реализована в нашем классе MainActivity, где мы наблюдаем данные из ViewModel и устанавливаем наблюдаемые данные в адаптере.

Что такое репозитории Android?

Большинство приложений сохраняют и извлекают данные либо из локального хранилища, либо с удаленного сервера. Репозитории Android — это классы, которые решают, должны ли данные поступать с сервера или из локального хранилища, отделяя логику вашего хранилища от внешних классов.

Теперь, когда мы ознакомились с различными терминами, которые собираемся использовать в проекте. Давайте посмотрим код в действии

Реализация:

В этом примере мы покажем концепцию MVVM, используя простой проект, в котором мы будем получать наши данные из API с помощью модификации и отображать их в нашем приложении.

Первый шаг

Мы создадим класс модели для нашего ответа. Вы также знаете это как класс POJO. Это представляет собой ответ от API

Мы также используем класс ResponseAPI, который вы увидите позже.

Второй шаг:
Для получения данных из API мы будем использовать модификацию. Вы можете найти реализацию в одном из моих предыдущих постов здесь

Третий шаг:
Теперь мы создадим наш класс представления модели. Класс LiveData предназначен для хранения и управления данными, связанными с пользовательским интерфейсом, с учетом жизненного цикла. Обратите внимание, как мы используем метод init в нашем классе представления модели для получения списка клиентов из API. Поэтому всякий раз, когда мы инициализируем наш класс CustomerViewModel, он автоматически извлекает данные с сервера.
Класс репозитория — это место, где мы делаем вызовы API и используем Livedata для наблюдения за ответами API.

Следует отметить, что мы используем метод postValue для отправки обновлений нашему наблюдателю.
у одного есть два варианта: либо вы можете обновить данные в основном потоке, либо вы можете обновить данные, используя фоновый поток. Таким образом, вариант использования setValue и postValue зависит только от этих двух ситуаций.

При использовании основного потока для изменения данных следует использовать метод setValue класса MutableLiveData, а при использовании фонового потока для изменения LiveData следует использовать метод postValue класса MutableLiveData.

Четвертый шаг:

Теперь давайте посмотрим на наш класс активности, где мы будем объявлять наш объект livedata и отображать данные в пользовательском интерфейсе.

Пока это все!!
Спасибо за чтение и не забудьте поделиться с вашими коллегами-разработчиками :)
Первоначально этот пост был опубликован на CodeTherapy.com.

Чтобы узнать больше, следите за мной на Medium и CodeTherapy.com, вы также можете связаться со мной в LinkedIn