ใน Google I / O ล่าสุด Jose Alcerreca และ Yigit Boyar บอกกับเราว่าเราไม่ควรใช้ LiveData เพื่อดึงข้อมูลอีกต่อไป ตอนนี้เราควรใช้ฟังก์ชั่นระงับสำหรับการดึงข้อมูลครั้งเดียวและใช้ Flow ของ Kotlin เพื่อสร้างกระแสข้อมูล ฉันยอมรับว่า coroutines นั้นยอดเยี่ยมสำหรับการดึงข้อมูลแบบครั้งเดียวหรือการดำเนินการ CRUD อื่น ๆ เช่นการแทรกเป็นต้น แต่ในกรณีที่ฉันต้องการสตรีมข้อมูลฉันไม่เข้าใจว่าข้อดีของโฟลว์คืออะไร สำหรับฉันแล้วดูเหมือนว่า LiveData ก็ทำเช่นเดียวกัน
ตัวอย่างที่มี Flow:
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>>
ฉันต้องการดูตัวอย่างของโครงการที่ใช้ coroutines และ Flow เพื่อทำงานกับ Room หรือ Retrofit ฉันพบเฉพาะตัวอย่างสิ่งที่ต้องทำของ Google ที่ใช้ coroutines สำหรับการดึงข้อมูลแบบครั้งเดียวแล้วดึงข้อมูลด้วยตนเองเมื่อมีการเปลี่ยนแปลง