【发布时间】:2021-09-08 14:17:24
【问题描述】:
我在我的应用程序中使用房间数据库。我有一个功能可以在我的应用程序中下载一些内容。当每个内容都保存在我的数据库中时,我需要更新一个表,其中包含指示是否保存每个内容的列。保存内容时,我们在表格中设置一个布尔值。
所以流程是:调用一个API,保存其内容,然后将另一个表中的更新列保存为true。这发生在多个 API 上。每个内容保存成功都会在另一个表中执行更新查询。所有 API 调用都是按顺序调用的。
我收到 DAO 的以下错误。
Caused by android.database.CursorWindowAllocationException Cursor window allocation of 2048 kb failed. # Open Cursors=321 (# cursors opened by this proc=321)
每个内容保存后,代码流程如下:
myDao.updateStatus(id) //updates a column value to true
.subscribeOn(Schedulers.io())
.subscribe {
myDao.getContent(id) //Select query to check id is present in table or not
.subscribeOn(Schedulers.newThread())
.subscribe { count ->
if (count > 0) {
//Call next API
}
}
}
DAO 只是更新一个小内容并选择只有几个布尔列的单行。所以,这不会达到 2MB。那为什么这个DAO会出现这个异常呢?
【问题讨论】:
标签: android kotlin rx-java android-room rx-java2