首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQLite安卓数据库光标窗口分配2048kb失败

SQLite安卓数据库光标窗口分配2048kb失败
EN

Stack Overflow用户
提问于 2012-07-05 16:09:06
回答 7查看 62.4K关注 0票数 78

我有一个例程,每秒多次对SQLite数据库运行不同的查询。过了一段时间,我就会得到这个错误

"android.database.CursorWindowAllocationException: - Cursor window allocation of 2048 kb failed. # Open Cursors = "出现在LogCat中。

我有应用程序的内存使用日志,实际上,当使用达到一定的限制时,我会得到这个错误,这意味着它用完了。我的直觉告诉我,每次我运行查询时,数据库引擎都会创建一个新的缓冲区(CursorWindow),即使.close()游标,垃圾收集器和SQLiteDatabase.releaseMemory()在释放内存方面都不够快。我认为解决方案可能在于“强制”数据库总是写入相同的缓冲区,而不是创建新的缓冲区,但我一直无法找到这样做的方法。我曾尝试实例化我自己的CursorWindow,并尝试将SQLiteCursor设置为它,但都无济于事。

有什么想法吗?

编辑:来自@GrahamBorland的re示例代码请求:

代码语言:javascript
复制
public static CursorWindow cursorWindow = new CursorWindow("cursorWindow"); 
public static SQLiteCursor sqlCursor;
public static void getItemsVisibleArea(GeoPoint mapCenter, int latSpan, int lonSpan) {
query = "SELECT * FROM Items"; //would be more complex in real code
sqlCursor = (SQLiteCursor)db.rawQuery(query, null);
sqlCursor.setWindow(cursorWindow);
}

理想情况下,我希望能够在给出新查询之前执行.setWindow(),并在每次获得新数据时将数据放入相同的CursorWindow中。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11340257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档