Di Google I / O terakhir, Jose Alcerreca dan Yigit Boyar memberi tahu kami bahwa kami tidak boleh lagi menggunakan LiveData untuk mengambil data. Sekarang kita harus menggunakan fungsi menangguhkan untuk pengambilan satu-jepretan dan menggunakan Aliran Kotlin untuk membuat aliran data. Saya setuju bahwa coroutine sangat bagus untuk pengambilan satu-shot atau operasi CRUD lainnya, seperti menyisipkan, dll. Tetapi dalam kasus-kasus di mana saya membutuhkan aliran data, saya tidak mengerti apa keuntungan yang diberikan Flow kepada saya. Sepertinya saya bahwa LiveData melakukan hal yang sama.
Contoh dengan Flow:
ViewModel
val items = repository.fetchItems().asLiveData()
Gudang
fun fetchItems() = itemDao.getItems()
Dao
@Query("SELECT * FROM item")
fun getItems(): Flow<List<Item>>
Contoh dengan LiveData:
ViewModel
val items = repository.fetchItems()
Gudang
fun fetchItems() = itemDao.getItems()
Dao
@Query("SELECT * FROM item")
fun getItems(): LiveData<List<Item>>
Saya juga ingin melihat beberapa contoh proyek menggunakan coroutine dan Flow untuk bekerja dengan Room atau Retrofit. Saya hanya menemukan sampel ToDo Google di mana coroutine digunakan untuk pengambilan satu-jepretan kemudian secara manual mengambil data tentang perubahan.