Dans les dernières E / S de Google, Jose Alcerreca et Yigit Boyar nous ont dit que nous ne devrions plus utiliser LiveData pour récupérer des données. Maintenant, nous devons utiliser les fonctions de suspension pour les récupérations ponctuelles et utiliser le flux de Kotlin pour créer un flux de données. Je conviens que les coroutines sont idéales pour l'extraction en une seule opération ou d'autres opérations CRUD, telles que l'insertion, etc. Mais dans les cas où j'ai besoin d'un flux de données, je ne comprends pas quels avantages Flow me donne. Il me semble que LiveData fait de même.
Exemple avec Flow:
ViewModel
val items = repository.fetchItems().asLiveData()
Dépôt
fun fetchItems() = itemDao.getItems()
Dao
@Query("SELECT * FROM item")
fun getItems(): Flow<List<Item>>
Exemple avec LiveData:
ViewModel
val items = repository.fetchItems()
Dépôt
fun fetchItems() = itemDao.getItems()
Dao
@Query("SELECT * FROM item")
fun getItems(): LiveData<List<Item>>
J'aimerais également voir quelques exemples de projets utilisant des coroutines et Flow pour travailler avec la salle ou le retrofit. Je n'ai trouvé qu'un échantillon ToDo de Google où les coroutines sont utilisées pour la récupération en une seule fois, puis récupérer manuellement les données lors de la modification.