我正在使用带有协程支持(v。1.3.2)的Room(v。2.2.1)和以下设置
@Entity(tableName = "simple_table")
data class SimpleEntity(
@PrimaryKey(autoGenerate = true) val id: Long = 0
)
@Dao
interface SimpleDao {
@Query("SELECT * FROM simple_table WHERE id = :id")
fun getRecord(id: Long): Flow<SimpleEntity?>
@Insert
suspend fun insert(entity: SimpleEntity)
}
然后将数据插入具有自动生成ID 1的simple_table中之后,我尝试查询
db.simpleDao.getRecord(1).collect {
//fetch data
}
db.close()
db.close()
永远不会到达。它只是冻结在collect()
方法中。如果我将代码更改为
db.simpleDao.getRecord(1).first {
//fetch data
}
或
db.simpleDao.getRecord(1).take(1).collect {
//fetch data
}
然后它可以正常工作。但是,为什么简单的collect()
永远不会结束执行?我在会议室配置中错过了什么以使其能够正常工作?