问题标签 [android-room]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 单元测试室和 LiveData
我目前正在使用新的Android Architecture Components开发应用程序。具体来说,我正在实现一个房间数据库,LiveData
它在其中一个查询中返回一个对象。插入和查询按预期工作,但是我在使用单元测试测试查询方法时遇到问题。
这是我要测试的 DAO:
NotificationDao.kt
如您所知,查询函数返回一个LiveData
对象,如果我将其更改为List
,Cursor
或基本上任何内容,那么我会得到预期的结果,即插入数据库中的数据。
问题是以下测试总是会失败,因为对象value
的LiveData
总是null
:
NotificationDaoTest.kt
所以问题是:有谁知道执行涉及 LiveData 对象的单元测试的更好方法?
android - Android 房间持久化库 - 如何更改数据库版本
更新数据库版本后,我不清楚如何使用房间。
例如,假设我最初在房间中定义了以下数据库:
然后我更改版本,使其现在看起来像这样:
当我看到更改版本时,我的意思是我可能在数据库中添加或删除了列,所以它不一样。我的问题如下:
我现在需要维护两个数据库吗?v1 和 v2 ?有没有办法将实体轻松复制到 v2 ?同样在更改版本时,只需将其从 1 更改为 2 就足够了,或者我是否必须创建另一个名为 EventDatabase2 的类?
这也是我正在使用的房间版本:android.arch.persistence.room:runtime:1.0.0-alpha1
android - 如何在运行时动态查询房间数据库?
问题
是否可以在运行时构造查询?
用例
该limit
部分是可选的。也就是说,它应该能够有或无限制地执行相同的查询。
更复杂的用例
在前一种情况下,可以进行两个有限制部分和没有限制部分的静态查询,并且每次都可以使用适当的一个。但有时我们可能不得不处理更复杂的情况,例如构建过滤器。
在这种情况下,与前面的示例不同,将有多个可选部分。对于一个图书表,我们可能需要根据图书所属的类别、作者姓名、价格范围、出版日期等进行过滤。几乎不可能将这些部分的所有组合都进行静态查询。
android - 如何使用改造检索到的模型信息初始化房间持久库数据库?
我无法理解如何将改造与android 持久图书馆室一起使用。
假设我定义了以下模型实体:
并且可以说我最初是从经过改造的网络服务中获取这些信息的。因此,在我调用改造服务后,它将返回一个填充了 Event 类型的类(使用 gson)。
现在一切都很好,我们有一个名为 Event 的完全填充的类,其中包含通过改造 api 服务调用来自我们的休息服务器的数据。
现在我想确保这些信息进入房间持久库。我该怎么做呢:
即使我构建了数据库,我只是将类名传递给它,而不是返回的实际类改造。
例如,要建立一个房间数据库,我会这样做:
现在我们有了一个事件数据库,但是我如何将我的信息从改造中获取到数据库表 MY_EVENT_TABLE 中?
我有一个想法,但不确定它是否正确或有效。如果我在房间里有这样的刀:
从服务器获取数据后,我可以调用 DAO 插入方法吗?
所以它会是:eventDao.addEvent(event);
这是推荐的方式吗?
android - Android -room 持久库 - DAO 调用是异步的,因此如何获取回调?
从我读过的内容来看,Room 不允许您在主线程上发出数据库查询(因为可能会导致主线程延迟)。 所以想象一下我正在尝试更新 UI 主线程上的文本视图,其中一些数据我将如何获得回调。让我给你看一个例子。想象一下,我想将我的业务模型数据存储到一个名为 Events 的对象中。因此我们会有一个 EventDao 对象:
假设我们在下面有这个 DAO 对象:
现在在某些活动中,我有一个 textview,我想更新它的值,所以我这样做:
由于获取是在主线程之外发生的,我认为我不能这样称呼它并期待顺利更新。这里最好的方法是什么?
更多信息:我想使用房间数据库作为检索模型信息的机制,而不是将其静态保存在内存中。因此,在我通过休息服务下载模型后,我可以通过数据库在本地使用该模型。
更新:所以因为我要返回一个实时数据,所以我可以这样做:
这适用于非常小的东西。但想象一下我的数据库有一百万个项目。然后当我打这个电话时,检索数据会有延迟。第一次调用它时,用户会看到有延迟。如何避免这种情况?所以要明确一点,有时我不想要实时数据,我只需要在查看后更新。我需要知道该怎么做?即使它没有使用 liveData。
android-room - 字符以房间持久性 android 中的查询开头
我尝试了以下查询,但没有给出任何结果。
SELECT * FROM details WHERE name LIKE :name
我使用 AutoCompleteTextview 进行搜索。是否有任何查询可以找到子字符串?
java - Room - 模式导出目录未提供给注释处理器,因此我们无法导出模式
我正在使用 Android 数据库组件室
我已经配置了所有东西,但是当我编译时,Android Studio 给了我这个警告:
模式导出目录未提供给注释处理器,因此我们无法导出模式。您可以提供
room.schemaLocation
注释处理器参数或将 exportSchema 设置为 false。
据我了解,这是数据库文件所在的位置
它如何影响我的应用程序?这里的最佳做法是什么?我应该使用默认位置(false
值)吗?
android - Android Persistence room: "Cannot figure out how to read this field from a cursor"
I'm trying to create a relation between two database tables using the new Android Persistence Room Library. I looked at the documentation and tried to implement the example found at https://developer.android.com/reference/android/arch/persistence/room/Relation.html:
I get the following error
in relation to:
I would like to point out that I found some things in their docs really confusing. For example the lack of @PrimaryKey
and also the fact that the User
class is missing the @Entity
annotation, although it's supposed to be an entity (as fas as I see it). Did anybody run into the same problem? Thanks a lot in advance
android - 在 Google Drive 应用程序文件夹中存储房间数据库?
我还不熟悉Room和 Google Drive API,我想知道是否可以创建 Room 数据库并将其存储在隐藏的 Google Drive App 文件夹中以便跨设备同步。如果有人实现了类似的东西,一个简短的例子会很棒。谢谢!
编辑:
使用 LiveData 观察 Room 数据库何时发生变化,然后触发同步到 Google Drive 怎么样?
android - Android 架构组件 liveData 和 room - 最低要求是什么?
我意识到它处于 alpha 阶段,但是我想知道像 liveData 和 room 这样的 android 架构组件是否有任何最低要求?例如 min android api/sdk 等。我看过这里 ,但如果有任何要求,它没有显示给我。我可以假设我可以使用这个权利至少回到 android ICS 吗?