В останньому вході / виводу Google Хосе Альцеррека та Ігіт Бояр сказали нам, що нам більше не слід використовувати LiveData для отримання даних. Тепер нам слід використовувати функції призупинення для одноразових випробувань і використовувати потоки Kotlin's Flow для створення потоку даних. Я погоджуюсь, що супроводи чудово підходять для отримання одного удару або інших операцій CRUD, таких як вставка тощо. Але у випадках, коли мені потрібен потік даних, я не розумію, які переваги дає мені Flow. Мені здається, що LiveData робить те саме.
Приклад із потоком:
ViewModel
val items = repository.fetchItems().asLiveData()
Сховище
fun fetchItems() = itemDao.getItems()
Дао
@Query("SELECT * FROM item")
fun getItems(): Flow<List<Item>>
Приклад з LiveData:
ViewModel
val items = repository.fetchItems()
Сховище
fun fetchItems() = itemDao.getItems()
Дао
@Query("SELECT * FROM item")
fun getItems(): LiveData<List<Item>>
Я також хотів би побачити кілька прикладів проектів, що використовують супровідні програми та Flow для роботи з Кімнатою чи Модернітом. Я знайшов лише зразок ToDo від Google, де підпрограми використовуються для отримання одного удару, а потім вручну переробляють дані про зміни.