0

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

任何想法,如果不是,我该如何调试内存以查看它在哪一步增长。我看着堆,但实际上没有任何大小。

谢谢。

4

3 回答 3

2

您可以使用 MAT 分析器检查内存问题,此链接将对您有所帮助

于 2013-11-12T09:46:41.280 回答
1

当您从一个活动 A 跳到另一个活动 B 时,A 没有完成并且资源仍在内存中,有 3 种解决方案。

  1. 调用活动 B 时,可以完成活动 A。
  2. 对位图使用 Wea​​kRefrences,这样 gc 就可以删除未使用的资源并在 onResume 上重新加载它们。
  3. 删除位图 onPause() 的引用并加载它们 onResume()
于 2013-11-12T09:50:16.827 回答
0

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

于 2013-11-12T09:45:41.910 回答