第二次加载后,位图大小超过VM预算

时间:2013-11-12 09:41:41

标签: java android image bitmap

这让我发疯了。我有一个以位图为背景的游戏,这很大,所以我缩小它,这很好用。但是,当我导航到另一个活动,然后重新加载游戏屏幕时,它会在绘制背景时崩溃。我在所有位图上调用了recycle,并在onDestroy()上将它们设置为null,但这并没有帮助。

任何想法,如果没有,我如何调试内存,看看它在哪个步骤增长。我看着堆积,但实际上并没有任何大小。

感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用MAT分析器检查内存问题,link可以帮助您

答案 1 :(得分:1)

当你从一个活动A跳到另一个活动A时,A没有完成,资源仍在备忘录中,有3个解决方案。

  1. 调用活动B时,您可以完成活动A.
  2. 将WeakRefrences用于位图,以便gc可以清除未使用的资源 并在onResume上重新加载它们。
  3. 删除位图onPause()的引用并加载onResume()

答案 2 :(得分:0)

在不需要位图后立即使用bitmap.recycle()。