我正在从MySQL数据库加载大约200张图像到我的Android应用程序中。 当我尝试将它们全部存储在Bitmaps的Bitmaps和ArrayLists中时,我很快就会遇到内存不足的问题。
我想知道存储这些图像的最佳方法是什么。我可以将它们全部保存在SD卡上,并且只在我的应用程序中保存它们的路径。
但我还需要始终在ViewPager的页面中显示这些图像(每页显示约8个图像)。如果我使用来自资源的图像填充ViewPager,Android和ViewPager会自行管理内存问题(它会在内存耗尽时从RAM中删除未显示的图像并将其加载回来,当您向后滚动时)< / p>
如何在不耗尽内存的情况下管理存储这么多图像?
答案 0 :(得分:1)
由于内存有限,您将无法直接引用每个图像,否则就像您说的那样,内存不足。只要存在对BitMap
对象的引用,这些图像就会占用内存空间。要释放此内存,您需要取消引用这些BitMaps
和/或清除ArrayList
,这将允许垃圾收集器释放未使用的内存。理想情况下,您只需要参考您可以看到的图像,或者您将看到的图像。
您可以查看每个页面视图的8个图像,或者查看周围页面视图中的图像。如果您显示的图像比它们占用的图像大得多,那么您可能希望动态调整这些图像的大小并仅将它们存储为它们出现的大小,这也应该有助于减少图像的内存占用。
答案 1 :(得分:1)
Android开发人员已就此主题编写了一系列教程: http://developer.android.com/training/displaying-bitmaps/index.html