代码之家  ›  专栏  ›  技术社区  ›  Allan Veloso Vineeth Reddy

强制android room与livedata同步

  •  0
  • Allan Veloso Vineeth Reddy  · 技术社区  · 7 年前

    我对room dao有一些查询,有时需要在后台线程中同步使用,有时需要在返回livedata的主线程上异步使用。

    当前,我对同一查询执行两个版本:

    @Query("SELECT * FROM Entity")
    abstract fun list(): LiveData<List<Entity>>
    
    @Query("SELECT * FROM Entity")
    abstract fun listNow(): List<Entity>
    

    有没有办法强制第一个方法同步运行,这样我就不需要两个相等的查询?

    0 回复  |  直到 7 年前
        1
  •  0
  •   Joshua de Guzman    7 年前

    很少注释

    第一, Room 不允许在框外进行同步查询。

    接下来是 房间 实际上是针对异步调用的,因为这些查询不是要立即获取的。

    room确保数据库不会在主线程上被访问,因为它可能会锁定主线程并触发anr。如果需要从主线程访问数据库,则应始终使用异步替代方法或手动将调用移动到后台线程。

    你能做什么

    您可以通过显式调用 allowMainThreadQueries 在设置数据库时。

    工具书类

    推荐文章