我的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
错误,可能是通过设置一些全局错误处理程序等,因为我由于某种原因得到这些消息不是立即的,并且无法弄清楚是什么代码导致它们。
答案 0 :(得分:0)
使用后始终关闭光标对象。然后你可以避免这样的错误。