移动光标时的android.database.CursorWindowAllocationException

Zel*_*g63 14 java sqlite android cursor

我正在使用SQLite数据库而且我经常得到运行时错误,我无法找到它的起源.在查询之后,我使用moveToFirst指向检索到的第一条记录,这有时会触发android.database.CursorWindowAllocationException异常.添加到此异常的是以下句子:"2048kb的游标窗口分配失败.#open Cursors = 736(#cursors opendby this proc = 736)".

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

Nig*_*elK 32

此错误几乎总是由于在光标结束时未关闭光标.每次打开游标时,都需要内存来映射游标所代表的数据,并且在游标关闭之前不能释放内存.可用于此目的的内存量存在限制,因此如果游标未关闭且应用程序继续打开新游标,则此错误可能在某个时刻发生.

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