android-room相关内容

在 Android 上使用 Room 时如何安装最新版本的 Sqlite aar

我正在调查我当前应用程序中的 Android Room 数据库. 我正在尝试通过使用最新的 aar 来安装最新版本的 Sqlite 我尝试将 aar 放在我的数据库模块 libs 文件夹中并在我的 gradle 文件中引用它,但是显示的 sqlite 版本总是 3.22.0其中 aar 是 3.34.0 我需要遵循哪些步骤来覆盖默认提供的 Sqlite 版本并使用我下载的 aar ..
发布时间:2021-11-02 23:20:37 移动开发

如何在android中获取Room数据库的行数?

我正在遵循拥有 Repository 和 Dao 等的做法.我试图通过一个函数来获取我的数据库存储库中的行数 int getNumFiles() {列表lst = files.getValue();//文件的类型为 LiveData>档案;如果(lst == null){返回0;} 别的 {返回 lst.size();}} 但是 lst 总是计算为 null.我想这与我不被允许从 UI 线程查 ..
发布时间:2021-11-02 23:20:31 移动开发

限制房间数据库中的行数

如何通过删除行中最旧的项目并插入最新的项目来限制 Android 房间数据库中的行数? 在向数据库中添加项目时,我猜这是一个标准查询? 编辑:我想限制一个数据库表的最大行数为 20.如果达到该限制,我们将删除最旧的项目并通过保留当前行插入新项目数到 20. 解决方案 我认为您可以将数据插入表中,然后删除除最后 20 行(限制)之外的所有行 要删除您可以使用以下查询 ..
发布时间:2021-11-02 23:20:28 Java开发

RecyclerView Adapter 依赖于两个数据源

假设 我有一个拥有多个帐户的用户. 每个帐户可能有多个他们控制的页面. 页面可由一个或多个帐户控制. 所有这些数据都存储在具有实体 {UserEntity,PageEntity,User_Page_Entity} 的 Room 数据库中,其中 User_Page_Entity 通过仅存储用户的主键 ID 来控制用户与其页面之间的关系. 我的回收站视图应该显示所有页面,其中一些页面 ..
发布时间:2021-11-02 23:15:23 移动开发

在 MVVM 架构中检查 SELECT 查询结果长度的干净方法是什么?

我正在创建一个应用程序,它将使用 SearchView 让用户进行查询以过滤数据.我正在使用 RoomDB,并尝试遵循 中推荐的 Model-View-ViewModel 架构Android 开发者指南. 我有一个实体和一个 DAO(现在我的数据库只有一张表).我在 DAO 中有一个方法,如下所示: @Query(“SELECT * FROM table WHERE column1 = : ..
发布时间:2021-11-02 23:05:47 Java开发

Room Database 不会在后台线程上运行我实现的事务

这个问题是我为我的其他问题,因此,如果您对第一个问题有解决方案可以避免此问题,那么我会全力以赴. 所以我在 Dao (getPageCombinedData) 中有这个方法,它用 @transaction 注释并且应该返回一个 MediatorLiveData,我想既然 MediatorLiveData 是 LiveData 的子类,那么Room 将提供必要的代码以使用其文档中引用的后台线程 ..

StateFlow Observer 被触发两次 - 这是一个好的解决方案吗?

好的,所以我一直在使用带有 Room 数据库的 StateFlow.现在我有一个常见的案例.在我的应用程序开始时,我有一个逻辑,如果 ROOM 数据库为空,我应该显示一个 EmptyContent(),否则我将显示 ROOM 数据库中的 ListContent(). 现在每次我启动应用程序时,我总是让 EmptyContent() 显示半秒,然后显示 ListContent().之后,当我使 ..

从房间 2.2.6 更新到 2.3.0 后,出现错误:“您必须使用 @NonNull 注释主键."

我将房间从 2.2.6 更新到 2.3.0 并在编译时开始在编译/生成的 java 代码中看到奇怪的错误.我在 .kt 文件或目录 ...build/tmp/kapt3/stubs/debug 中生成的 .java 文件中没有看到任何错误/... 我只看到破坏构建的编译时错误. 我得到的完整错误: 错误:您必须使用 @NonNull 注释主键.“版本"可以为空.SQLite 认为这是一个 ..
发布时间:2021-11-02 22:51:21 移动开发

房间事务回滚或取消

@Transaction 中 Room 是否默认使用回滚? 它是否只取消 @Transaction 内部的下一个查询而不回滚? 它实际上在出错时做了什么? 解决方案 我假设您指的是使用 @Transaction 注释的已实现方法,例如: @Transactionpublic void transferMoney(String accountA, String accountB ..
发布时间:2021-11-02 22:51:08 移动开发

如何在 Room 中插入具有一对多关系的实体

我正在使用 Room 构建数据库,但我不知道如何将具有关系(在我的情况下为一对多)的新元素插入到数据库中.没有任何解决方案谈论过插入(他们只谈论查询数据). 这里是 DAO: @Dao抽象类 ShoppingListsDao {@插入抽象暂停乐趣 addNewShoppingList(newShoppingList: ShoppingList)@插入抽象挂起乐趣 addNewItem(ne ..
发布时间:2021-11-02 22:51:06 移动开发

Android 分页 3:如何更改 RemoteMediator 的参数

我正在为 Jetpack 的 Paging 3 库苦苦挣扎. 我设置 针对网络 API 调用进行改造 存储检索数据的空间 公开 Pager.flow 的存储库(请参阅下面的代码) 在房间数据库中缓存网络结果的 RemoteMediator PagingSource 由 Room 创建. 我知道 RemoteMediator 的职责是从网络中获取项目并将它们保存到 Ro ..

android:使用 CompletableFuture 从 Room 加载列表?

由于 AsyncTask() 方法已被弃用,我正在尝试替换它.以前 AsyncTask() 用于将 CardView 从 Room 数据库加载到 RecyclerView 列表中.我正在尝试使用 CompletableFuture() 作为替代,但该列表未加载.“List getAllCards()"的 Dao 方法;在 Android Studio 中给出错误消息“从未使用过该方法的返回值";所 ..

为什么 DAO 必须是接口或抽象类?

我想了解 RoomDatabase 幕后发生的事情,它要求 DAO 是一个接口或一个抽象类.我已经搜索了很长时间,但所有文章和文档都只解释了方法,而不是原因. 解决方案 不只是 Room,Retrofit 和其他库也使用这种模式,它被称为编程接口.而不是仅仅创建一个具体的实现,您只需指定您想要做的事情,他们就会为您提供一个将按照您的要求运行的实现. 要进一步学习,您可以查看这篇文章: ..