有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    使用光标对象后,请始终关闭它们。这样你就可以避免这样的错误