我有一个设置背景图片的活动。当我保持进入并离开此活动时,它会在某些设备中导致OutOfMemory。
假设我使用的是x-hdpi设备。如果我把图像放在hdpi存储桶中而不是放入x-hdpi存储桶,我是否会耗尽更多内存,因为如果我放入hdpi存储桶,图像需要按比例放大?实际上,如何确定我应该将图像放到哪个桶中?
有没有办法避免这种情况的OutOfMemory? 我尝试在OnDestroy中调用recycle和setImageResource(null)。但是当我再次进入该活动时,我会例外“无法绘制回收的位图”。
答案 0 :(得分:1)
回答第二个问题。
在解码图像并设置为背景之前,您应调整图像大小以避免内存溢出错误。当我们在内存中加载图像时,通常会出现此错误。见how to Display Images Efficiently
回答第一个问题。
将相同的图像放到不同的文件夹不会花费内存,就好像你将 LDPI 图像显示到 HDPI 设备一样,它会拉伸但是会占用相同的内存(尽管它会看起来很熟。)但是,如果你的设计师为每个密度制作不同的图像,那么图像尺寸会有所不同,然后会花费更多或更少的内存