0

我的应用程序使用 2 个不同类别(和布局)中的 29 个图像。在 1 个布局中,有 1 个图像视图在最多 25 个图像之间变化,然后另一个布局是包含所有图像的滚动视图,其中一次在屏幕上最多可见 3 或 4 个图像。以前我将图像保存为 .jpg,每个图像为 720*540,大小约为 200-300kb。在使用图像的 2 个布局之间切换后,我的应用程序出现了内存不足的问题;它正在使用超过 100 mb。我对位图进行了一些研究,并为我的图像尝试了它们,但它们并没有太大帮助,因为我仍然遇到内存不足的问题,并且它们将 .apk 大小增加了近 3 倍。加载图像的最首选方式是什么,它是作为 .jpg 或位图或其他方式的可绘制对象?任何建议,将不胜感激。

4

2 回答 2

2

当位图在内存中时,它是未压缩的。原始格式无关紧要。您可以指望每张图像占用大约宽度 * 高度 * 4 字节的内存。例如,您的每张 720x540 图像将占用约 1.5MB 的内存。

从哪里加载它们并不重要,至少就所需的内存量而言。

现在读到这个,

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

于 2013-08-01T00:25:06.100 回答
0

你可以阅读系统图库的源代码,然后你就可以完全理解如何操作位图。当您第一次获取图像时,您必须将原始文件解码,并将其保存到缓存文件中。然后下一次,你只需解码缓存文件,这样更快。你的记忆力有限。不要指望存储你所有的位图,只存储你想在屏幕上显示的位图。缩略图的大小比完整图像小得多。所以如果你想在屏幕上放 8 ~ 10 个缩略图也没问题。当用户点击缩略图浏览全图时,可以将全图加载到内存中,并回收其他位图。

于 2013-08-01T01:12:18.367 回答