0

我正在将 MySQL 数据库中的大约 200 张图像加载到我的 android 应用程序中。当我尝试将它们全部存储在 Bitmaps 和 Bitmaps 的 ArrayLists 中时,我很快就会遇到内存不足的异常。

我想知道存储这些图像的最佳方式是什么。我可以将它们全部保存在 sd 卡上,并且只将它们的路径保存在我的应用程序中。

但我还需要始终在 ViewPager 的页面中显示这些图像(每页显示大约 8 个图像)。如果我用来自资源的图像填充 ViewPager,Android 和 ViewPager 会自行管理内存问题(它会在内存不足时从 RAM 中删除未显示的图像,并在您滚动回它们时将它们加载回来)

如何在不耗尽内存的情况下管理存储这么多图像?

4

2 回答 2

1

由于可用内存有限,您将无法直接引用每个图像,否则就像您说的那样,您将耗尽内存。只要有对BitMap对象的引用,这些图像就会占用内存空间。要释放此内存,您需要取消引用这些BitMaps和/或清除ArrayList,这将允许垃圾收集器释放未使用的内存。理想情况下,您只需要参考您可以看到的图像,或者您接下来会看到的图像。

您可以只查找每个页面视图的 8 个图像,或者可能是周围页面视图中的图像。如果您显示的图像比它们占用的尺寸大得多,那么您可能需要动态调整这些图像的大小,并且只将它们存储为它们显示的大小,这也应该有助于减少图像的内存占用。

于 2012-12-18T20:48:05.517 回答
1

Android 开发人员就这个主题编写了一系列教程:http: //developer.android.com/training/displaying-bitmaps/index.html

于 2012-12-18T22:57:27.403 回答