SQLite游标如何在内部工作?

时间:2012-04-29 22:46:41

标签: android sqlite cursor

我正在开发一个需要在表上存储位图的项目。这些位图用于数据适配器中以显示在列表上。该表可能包含1000多个图像。我目前没有存储到文件的原因是因为我可以多快地读取和写入数据到db。

我一直在寻找的是理解SQLite游标的局限性。如何将光标加载到内存中?它是将查询结果放在内存中还是创建某种类型的临时读/写文件?我不想遇到查询大型数据集导致设备内存不足的问题。

2 个答案:

答案 0 :(得分:1)

如果我记得,它会保留许多结果缓存在内存中。它通常应该低于soft heap limit。这是一个建议限制,因此它更愿意超过限制而不是返回SQL_NOMEM。

我不相信它会为任何缓存机制写入磁盘。只要每个图像都适合内存,并且它们不在索引中,就不应该成为问题。

我不是一个Android程序员,因为它的价值。其中一些可以定制。

作为背景,sqlite_step是默认库中的光标。我不知道android是否实现了它自己的机制。您可以在其关于dynamic memory allocation的页面上找到一些常规信息。

答案 1 :(得分:0)

这是我做的一个老帖子。我的解决方案是将图像保存到文件,并将图像的路径保存到数据库表中。这更清洁,看起来更快。

将大型二进制数据保存到表中的想法似乎不正确。我没有关于为什么不是一个好主意的详细信息,但这只是我从一点点研究中得到的感受。