背景图片内存不足
Background image runs out of memory
好的,所以我遇到了这个非常奇怪的问题,我将用一个例子来解释它。
假设我有 2 个活动:ActivityOne、ActivityTwo。在 ActivityOne 中按下按钮时,它会打开 ActivityTwo (intent)
我在@drawables 中有 2 个背景图片:onebg (size=31k), twobg (size=30k)
onebg是ActivityOne中的后台。
当试图使 twobg 成为 ActivityTwo 的背景时,它因内存不足错误而崩溃。
但是,当将onebg 设置为ActivityOne 和ActivityTwo 的背景时,它起作用了。还没有尝试为它们都设置 twobg,但我想它很可能会起作用。
onebg 和 twobg 都是我在 photoshop 中制作的,它们是同一类型和所有内容,只是大小不同,因为上面的文字不同。
您应该使用图像加载库来加载大图像。我推荐 Glide
https://github.com/bumptech/glide, since it's also mentioned here Android developers - Loading Large Bitmaps Efficiently。您还应该阅读这篇文章以获取有关加载大型位图的更多信息。
我认为你没有正确理解位图的堆分配。
每个位图在堆中分配的大小不是由其大小决定的!!!它由尺寸决定!
举个例子:
您有一个大小为 30kb、尺寸为 1000*500 像素的位图。内存量是这样确定的:
1000 * 500 * 4 (its because each pixel should contain ARGB
informations)
所以在低堆的设备上你会遇到这样的图像大小问题。
另请关注@Drilon提示。
你也应该注意内存泄漏。
有关更多信息,请参阅 link 来自 google
好的,所以我遇到了这个非常奇怪的问题,我将用一个例子来解释它。
假设我有 2 个活动:ActivityOne、ActivityTwo。在 ActivityOne 中按下按钮时,它会打开 ActivityTwo (intent)
我在@drawables 中有 2 个背景图片:onebg (size=31k), twobg (size=30k)
onebg是ActivityOne中的后台。 当试图使 twobg 成为 ActivityTwo 的背景时,它因内存不足错误而崩溃。
但是,当将onebg 设置为ActivityOne 和ActivityTwo 的背景时,它起作用了。还没有尝试为它们都设置 twobg,但我想它很可能会起作用。
onebg 和 twobg 都是我在 photoshop 中制作的,它们是同一类型和所有内容,只是大小不同,因为上面的文字不同。
您应该使用图像加载库来加载大图像。我推荐 Glide
https://github.com/bumptech/glide, since it's also mentioned here Android developers - Loading Large Bitmaps Efficiently。您还应该阅读这篇文章以获取有关加载大型位图的更多信息。
我认为你没有正确理解位图的堆分配。
每个位图在堆中分配的大小不是由其大小决定的!!!它由尺寸决定!
举个例子:
您有一个大小为 30kb、尺寸为 1000*500 像素的位图。内存量是这样确定的:
1000 * 500 * 4 (its because each pixel should contain ARGB informations)
所以在低堆的设备上你会遇到这样的图像大小问题。
另请关注@Drilon提示。 你也应该注意内存泄漏。
有关更多信息,请参阅 link 来自 google