Ответ
LiveData — это observable-класс, который позволяет автоматически обновлять UI при изменении данных. Основные преимущества:
- Lifecycle-aware — автоматически подписывается и отписывается в зависимости от жизненного цикла (Activity/Fragment).
- Нет утечек памяти — отписывается при уничтожении lifecycle-владельца.
- Автоматическое обновление UI — если владелец активен (STARTED/RESUMED), данные передаются в UI-потоке.
- Transformations —
map(),switchMap()для преобразования данных без ручного управления подписками.
Пример с map():
val userLiveData: LiveData<User> = ...
val userNameLiveData = Transformations.map(userLiveData) { user ->
"${user.firstName} ${user.lastName}"
}
- MediatorLiveData — объединяет несколько источников данных.
- Distinct until changed — предотвращает дублирование событий (если данные не изменились).