java如何捕捉游标窗口错误
在我的ListView
已经填充了Cursor
结果(方法安卓.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 楼答案
使用光标对象后,请始终关闭它们。这样你就可以避免这样的错误