android.database.CursorWindowAllocation移动游标时的异常

2022-09-02 23:42:41

我正在使用SQLite数据库,我经常收到找不到来源的运行时错误。查询后,我用于指向检索到的第一条记录,这有时会触发异常。添加到此异常中的是以下句子:“2048kb 的游标窗口分配失败。# 打开 Cursors=736(#cursors此 proc=736 打开)”。moveToFirstandroid.database.CursorWindowAllocationException

在Android文档中,我还没有找到与此异常相关的任何内容。有谁知道这是原因和避免它的方法?


答案 1

此错误几乎总是由于在完成时未关闭游标。每次打开游标时,都需要内存来映射游标表示的数据,并且在游标关闭之前无法释放内存。可用于此目的的内存量是有限制的,因此,如果未关闭游标,并且应用程序继续打开新游标,则可能会在某个时候发生此错误。

我建议您检查代码,以确保创建的所有游标都在某个时候被关闭。还要注意在循环中打开游标的任何代码 - 您的错误消息显示“打开游标= 736”,这表明某种循环中有很多游标活动。


答案 2

推荐