Android Interview Review

@AndroidSobes Нравится 2 1 500

Популярные вопросы и ответы с собеседований на Android-разработчика.
Канал для Java-разработчиков @JavaSobes
Связаться с нами @SobesAdmin
https://itsobes.ru
Гео и язык канала
Россия, Русский
Категория
Образование


Написать автору
Гео канала
Россия
Язык канала
Русский
Категория
Образование
Добавлен в индекс
18.03.2019 05:12
3 Feb, 18:00 (17 дней назад)
Какие существуют способы реализации MVVM Android-приложении?

Суть MVVM и главное отличие от MVP в том, что View наблюдает за обновлениями ViewModel, при этом ViewModel не знает ничего о View.
Такое поведение реализуется через паттерн Observable-Observer и/или связывание данных (data binding).

Существуют следующие способы реализации MVVM в Android:

1. Использование Data Binding библиотеки
Эта библиотека помогает связать ViewModel и UI приложения. ViewModel объявляется как источник данных в лэйаутах соответствующих активити или фрагмента. После этого в элементах лэйаута добавляется связывание с полями ViewModel:



Библиотека Data Binding генерирует код, который обеспечивает связывание. При обновлении поля userName, обновится текст в TextView.

2. Использование ViewModel и LiveData
ViewModel (класс Architecture Components) реализован так, что переживает пересоздание активити и фрагментов. При использовании этого класса можно не беспокоиться о сохранении состояния, когда изменяется конфигурация.

LiveData – класс, реализующий паттерн Observable. LiveData принимает как наблюдателей объекты, которые реализуют интерфейс LifecycleOwner, например Activity и Fragment. Благодаря этому LiveData автоматически отписывает подписчиков при вызове onDestroy().
Data Binding может использоваться совместно с ViewModel и LiveData.

3. Кастомная реализация
Существует множество способов реализации связи между View и ViewModel, кроме предоставляемых библиотеками от Google.
Например ViewModel может использовать Observable из RxJava и View будет подписываться на обновления ViewModel так же как ViewModel подписывается на обновления Model.
Кастомная реализация добавляет больше гибкости, но нужно самому заботиться о сохранении состояния.

#Architecture