2

我正在制作一个应用程序,在该应用程序中,我从相机拍照并通过在 ByteArray 中压缩保存在数据库中,但我已经读过,如果有各种大量图像,则应用程序的处理速度可能会因从数据库中读取图像而变慢,所以什么最好存储图像(在内存或 sdcard 中)并在 ListView 中显示?

谢谢

4

4 回答 4

1

将图像保存到您的 SD 卡。最好的方法是使用 ImageCache。

缓存图像。

于 2012-05-03T03:53:05.530 回答
1

在您的数据库中存储图像会减慢您的查询速度,并且总体上通常是一个坏主意。

也看到这个SO 问题

于 2012-05-03T03:53:58.077 回答
1

最好的方法是将图像存储在带有单独文件夹的 SD 卡中。(使用内部存储器不会有帮助,因为它会占用安装其他应用程序所需的空间。)

每次加载应用程序时,请阅读文件夹的内容并填充您的列表。您不需要为它维护单独的数据库。使用缓存位图来获得更好的代码性能。

最佳实践将根据我的意见

  1. 确保您的缓存使用SoftReferences,这样您可以确保您不会耗尽内存,并且始终可以在丢失旧位图的“费用”上加载新位图。
  2. 使用 Canvas 的 drawBitmap 方法将大型位图绘制得更小。
  3. 确保防范OutOfMemoryError,并注意它是 Throwable 的子类,而不是 Exception 的子类,因此catch(Exception e)子句不会捕获它。
于 2012-05-03T04:01:55.637 回答
0

将图像存储在任何数据库中都是一个坏主意,缓慢会占用更多空间等。我所知道的最佳选择是将这些图像的路径或链接存储在数据库中,并将实际文件存储在一些存储设备(如 sdcard 或内部存储设备)上,如果这些图片很大的话或者会占用大量空间,我会将它们放在 sdcard 上。

于 2012-05-03T03:50:33.097 回答