gpt4 book ai didi

安卓房间 : Synchronous queries return null

转载 作者:行者123 更新时间:2023-11-29 15:37:24 25 4
gpt4 key购买 nike

我有一个 Site 和相应的 SiteDao:

@Dao
interface SiteDao {
@get:Query("SELECT * FROM site WHERE uid = 1 LIMIT 1")
val site: LiveData<Site>

@get:Query("SELECT * FROM site WHERE uid = 1 LIMIT 1")
val getSiteSync: Site

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(context: Site)
}

这个有效:

siteRepository.getSite().observe(activity, Observer<Site> {
// `it` is instance of Site, working as intended
})

这不是:

Thread {
val site = siteRepository.getSiteSync()
// site is null
}.start()

不要介意我使用的是 Repository 而不是 ViewModel,这只是一个示例。

知道为什么吗?

最佳答案

Room 默认不允许同步查询。

要实现这一点,您必须显式调用 allowMainThreadQueries在初始化数据库时。

之所以这样设计,是因为数据库选择应该观察变化,而不是立即获取。

关于安卓房间 : Synchronous queries return null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47112114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com