问题标签 [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.

0 投票
0 回答
44 浏览

android - 如何重复执行特定的后台工作?

我正在为属性列表实现搜索功能。我需要做的是查询数据库并将结果显示为用户在搜索框中键入的内容。

我所做的是每次检测到字符更改时执行搜索。像这样:

视图模型代码:

问题是当用户快速输入时,结果有时是错误的。因此,我定义了 asearchJob并在每次进行另一次搜索之前取消它。像这样:

视图模型代码:

这似乎工作正常。我有时会看到以前的搜索结果,但最终我得到了正确的结果。我有点担心这可能会产生什么后果。所以我想知道,有没有更好的方法来做到这一点,或者是否有更好的方法来解决这个问题?

万一有人想知道搜索是如何执行的,我的DAO课堂上有类似以下的内容。

0 投票
0 回答
33 浏览

android - 将数据库室更改为领域

我必须使用一个新的应用程序,它将使用领域,问题是什么时候必须播放存储旧应用程序有房间数据库。您是否相信,如果数据库更改会出现问题?谢谢您的帮助

注意:我不必保存旧信息

0 投票
1 回答
87 浏览

android - 每周在特定日期重置数据库值的最佳方法(Android - Room)

我正在开发一个具有每周功能的 Android 应用程序,也就是说,用户必须将一周中的每一天标记为完成。这个值是我数据库上的一个布尔值,初始化为 false,并在用户单击复选框时设置为 true。一切正常。

但我的问题是,每次新的一周开始时,我都需要在一周的所有 7 天里将这个布尔值“重置”为 false。我不需要过去几周的记录。重要的是实际的一周(周日到周六)。

这是一个非常简单的任务,我只需要这样做:

所以,我做了一些研究(我是安卓新手),发现安卓有不同的调度服务,比如 JobScheduler 或 AlarmManager。我的应用专为 Android 10+(API 29+)而设计。你认为我的问题的最佳解决方案是什么?这是一项非常简单的任务(它不会占用太多电池、互联网……),我需要在每周的特定日期(星期日)执行此操作。此外,即使周日手机关机,这项任务也需要尽快完成。它不需要是后台服务,但我需要保证当用户打开应用程序并且它是新的一周时,该方法需要在之前调用,但前提是它之前的实际一周没有被调用.

有人有想法吗?

0 投票
1 回答
433 浏览

kotlin - LiveData 未更新 UI(使用 ViewModel 和 Room 数据库)

所以我使用LiveData和ViewModel来设置获取和插入数据的功能,我使用Room数据库来保存数据。

在我将数据插入数据库后,我的 RecyclerView 没有更新数据。

RecyclerAdapterTransaksi.kt

使用 RecyclerView 显示来自数据库的数据的片段

PemasukkanFragment.kt

使用 LiveData 的 ViewModel 类

TransaksiViewModel.kt

TransakiDao.kt

将数据插入数据库的活动

TambahDataActivity.kt

我不知道这是什么问题,我卡了2天。

提前致谢。

0 投票
1 回答
50 浏览

android - Kotlin andoid 预填充数据库

我正在尝试构建一个非常简单的数据库来存储 Hangman 游戏的分数。

我建立了一个实体:

@Entity(tableName = "scores") 数据类 DBScore(@PrimaryKey var pseudo: String = "", var score: Int = 0) {

}

//从DB模型到kotlin模型的转换方法 fun List.asDomainModel(): List { return map { Score( pseudo = it.pseudo, score = it.score ) }

}

使用 db 文件用样本值预填充 db

为此,我创建了以下数据库文件:https ://wetransfer.com/downloads/c534dd62136c94f17c0ee71f1ef39a1920201011144837/6ff2b7

但我收到一个错误,不明白我的 db 有什么问题:

原因:java.lang.IllegalStateException:预打包的数据库具有无效的架构:scores(com.example.hangmangame.database.entity.DBScore)。预期:TableInfo{name='scores',columns={pseudo=Column{name='pseudo',type='TEXT',affinity='2',notNull=true,primaryKeyPosition=1,defaultValue='null'}, score=Column{name='score', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]} 找到: TableInfo{name='scores', columns={score=Column{name='score', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, pseudo=列{name='pseudo',type='TEXT',affinity='2',notNull=true,primaryKeyPosition=1,defaultValue='null'

似乎是列顺序的问题,但对我来说 SQL 对它不敏感。

感谢您的帮助。

问候

昆汀。

0 投票
0 回答
18 浏览

android - 在android中持久化服务器请求

如果我将服务器请求数据保存在数据库中并在没有任何用户交互的情况下管理它们,这是一个不错的选择吗?坚持请求是一种好习惯吗?

0 投票
1 回答
245 浏览

android - Kotlin Room 找不到字段的吸气剂

任务:app:kaptDebugKotlin FAILED E:\MobileProjects\NewsApp\app\build\tmp\kapt3\stubs\debug\com\appops\newsapp\models\Article.java:10:错误:找不到字段的吸气剂。私有 java.lang.Integer id;[WARN] 请求增量注释处理,但支持被禁用,因为以下处理器不是增量的:androidx.room.RoomProcessor (DYNAMIC)。^ FAILURE:构建失败并出现异常。

  • 出了什么问题:任务':app:kaptDebugKotlin'执行失败。

执行 org.jetbrains.kotlin.gradle.internal.KaptExecution java.lang.reflect.InvocationTargetException 时发生故障(无错误消息)

错误图像

请帮我

0 投票
1 回答
54 浏览

android - 扩展房间实体并使用相同的 DAO 和存储库是一种好习惯吗?

我想创建两个具有相同字段的实体,我看到我可以将一个实体扩展为继承字段,我想知道这样做是否是一种好习惯,以及使用单个 DAO 和存储库是否有任何问题这些实体。

我要重用的实体

具有相同字段的新实体

0 投票
0 回答
42 浏览

kotlin - Room - 如何设置可为空的外键

在我的 Kotlin Android 代码库中,我有以下 2 个实体..

和集团实体

我的问题是我正在尝试设置可为空的外键,正如您在名为 ModuleConfiguration 的实体中看到的那样,有一个名为 group_id 的列,它是可为空的。

由于此列属于名为 Group 的其他实体,因此我尝试将其设为外键,但是当我这样做时,出现以下错误

SQLiteConstraintException:外键约束失败(代码 787)

在网上搜索时,我在stackoverflow上找到了以下答案:

Android with Room - 如何在房间上设置外键可为空 或 可为空的外键

但这对我没有帮助,因为这些答案建议将原始类型(如 int 或 long)更改为非原始类型(如 Integer 或 Long)以允许它们为空。我已经在使用 String 作为类型。

任何帮助将不胜感激。

提前致谢。