背景图片内存不足

时间:2017-03-12 00:02:04

标签: android android-drawable

好的,所以我有这个非常奇怪的问题,我将用一个例子来解释它。

假设我有2个活动:ActivityOne,ActivityTwo。在ActivityOne中按下按钮时,它会打开ActivityTwo(意图)

我在@drawables中有2个背景图片:onebg(size = 31k),twobg(size = 30k)

onebg是ActivityOne中的背景。 当试图使ActivityTwo的背景成为twobg时,它会因Out of Memory错误而崩溃。

但是,当将onebg设置为ActivityOne和ActivityTwo的背景时,它可以正常工作。 Haven没有尝试为他们两个设置twobg,但我想这很可能会奏效。

onebg和twobg都是我在photoshop中制作的,它们是相同的类型和一切,因为它上面有不同的文字,所以大小不同。

2 个答案:

答案 0 :(得分:2)

我认为您没有正确理解位图的堆分配。

每个位图在堆中分配的大小不是由其大小决定的!它的维度决定了它!

让我们举个例子:

你有一个尺寸为30kb,尺寸为1000 * 500像素的位图。内存量以这种方式确定:

  

1000 * 500 * 4(因为每个像素应包含ARGB   信息)

因此,在具有低堆的设备上,您会遇到此类图像大小的问题。

还要注意@Drilon提示。 你也应该注意内存泄漏。

有关更多信息,请参阅谷歌的链接

Loading Large Bitmaps Efficiently

答案 1 :(得分:0)

您应该使用图像加载库来加载大图像。我建议使用Glide django heroku media files 404 error,因为这里也提到https://github.com/bumptech/glide。您还应该阅读此内容以获取有关加载大位图的更多信息。

相关问题