2

我有一个图像非常密集的应用程序,我发现在加载多个活动时遇到了很多 OutOfMemory 问题。

这些活动都是位图的网格视图或列表视图,单击图像会将您带到另一个包含另一组图像的活动(有点像专辑专辑的专辑)。前 3 个活动运行良好,但是当进一步向下导航时,我开始遇到一些严重的 OutOfMemory 错误。

使用 DDMS 进行堆栈转储后,之前活动的 GridViews 和 Listviews 似乎占用了所有内存。这是意料之中的,因为他们自己显示了很多位图,但我不确定 VM 如何释放堆栈中的活动,即使你没有调用“finish()”,他们是否也会这样做他们。

活动是否在进入后台时回收他们的视图,然后在您导航回活动时恢复它们,或者正在清除我的网格视图和列表视图中的图像视图,这是我需要在活动 onPause() 和 onResume() 上手动处理的事情离开生命周期功能中的活动时?

4

2 回答 2

1

考虑回收 位图onPause

于 2012-09-17T09:24:05.043 回答
1

请在OOME上查看我的回答

bitmap.recycle()使用后总是调用bitmaps,因为GC无法清除位图持有的内存。

上面的链接有一个通用的解决方案,请通过它。

于 2012-09-17T09:37:57.590 回答