Для меня LiveData
имеет два преимущества:
- Он знает о событиях жизненного цикла и будет доставлять обновления только в соответствующем состоянии подписчика (
Activity
/ Fragment
).
- Содержит последнее опубликованное значение и обновляет вместе с ним новых подписчиков.
Как уже было сказано, если вы используете его из компонентов жизненного цикла (Activity
/ Fragment
) и доставленное обновление может быть выполнено в любое время, чем вы можете обойтись без держателя жизненного цикла, в противном случае, рано или поздно это может привести к сбою или потере данных.
В качестве альтернативы поведению LiveData
я могу предложить BehaviourSubject
из RxJava2
фреймворка, который действует почти так же, удерживая последнее обновленное значение и обновляя его новыми подписчиками.