如何捕获CursorWindow错误

时间:2016-04-08 06:16:35

标签: java android-cursor

我的ListView已经填充了Cursor个结果(方法android.database.sqlite.SQLiteDatabase.query)后,我会在几秒钟后(不是立即)获得此日志:

04-08 07:40:43.501: E/CursorWindow(854): need to grow: mSize = 1048576, size = 54, freeSpace() = 12, numRows = 12129
04-08 07:40:43.501: E/CursorWindow(854): not growing since there are already 12129 row(s), max size 1048576
04-08 07:40:43.501: E/CursorWindow(854): The row failed, so back out the new row accounting from allocRowSlot 12128
04-08 07:40:43.501: E/Cursor(854): Failed allocating fieldDir at startPos 0 row 12128
04-08 07:40:43.950: D/Cursor(854): finish_program_and_get_row_count row 17368

关键是我无法理解为什么我会收到这些消息,并且从他们来的位置,因为结果已经加载并且从数据库返回的行数仅为470,而不是12129,正如日志所说。由于密集使用数据库查询,我怀疑该消息可能以某种奇怪的方式来自应用程序的其他模块。

问题是我如何追溯这样的CursorWindow错误,可能是通过设置一些全局错误处理程序等,因为我由于某种原因得到这些消息不是立即的,并且无法弄清楚是什么代码导致它们。

1 个答案:

答案 0 :(得分:0)

使用后始终关闭光标对象。然后你可以避免这样的错误。