9

我正在做一个需要在表格上存储位图的项目。这些位图用于数据适配器中以显示在列表上。该表可能包含超过 1000 个图像。我目前不存储到文件的原因是因为我可以将图像读取和写入数据库的速度有多快。

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

4

2 回答 2

1

如果我记得的话,它会尽可能多地将结果缓存在内存中。通常,它应该保持在软堆限制以下。这是一个建议限制,因此它更愿意超过限制而不是返回 SQL_NOMEM。

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

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

作为背景,sqlite_step是默认库中的光标。我不知道android是否已经实现了它自己的机制。您可以在他们的页面上找到一些关于动态内存分配的一般信息。

于 2012-06-23T04:51:32.747 回答
0

这是我做的一个旧帖子。我的解决方案是将图像保存到文件并将图像的路径保存到数据库表中。这更干净,似乎更快。

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

于 2016-04-07T15:43:04.730 回答