△ Room 中对 Flow 的支持
Jetpack Room 对协程的支持越来越丰富: Room 2.1 版本增加了对协程的支持,并加入了一次性 (one-shot) 的读写操作,Room 2.2 我们通过 Flow 为读操作加入了可观察性,当数据库中的数据有变化时它可以使您收到通知。
△ Room 支持异步 query 操作
Flow
https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/
Flow 实战
假设我们有一个记录小狗信息的数据库,它的 name 字段是主键 (primary key),所以在数据库中不可能同时有两个 name 字段相同的数据,也就是每只小狗都是唯一的。
@Entity
data class Dog (
@PrimaryKey val name: String,
val cuteness: Int,
val barkingVolume: Int
)
为了从数据中获取一个包含所有小狗信息的总表,我们在 DAO 中编写如下 query 语句:
@Query("SELECT * FROM Dog")
fun getAllDogs(): List<Dog>
DAO
https://developer.android.google.cn/training/data-stor