0

我正在AnimationDrawable播放一个运行良好的 PNG 序列。问题是在添加这部分后,应用程序从使用 ~7MB 的 RAM 变为 ~32MB。

我知道我们不能直接调用释放内存,但是在这种情况下是否有某种方法可以最大限度地减少内存使用Animation......

4

3 回答 3

0

动画 Drawable 在 Android 中第二次运行时导致 OutOfMemoryError

这个问题的答案提出了一种释放动画drawable中使用的位图的解决方案,调用 .recycle() 来释放位图。您会期望 AnimationDrawable 为您执行此操作,实际上它可能会在您离开活动时执行此操作,但是这可能对您有用,而无需依赖 System.gc();

这似乎是一个普遍的问题。上面的链接是迄今为止最好的答案。

于 2012-08-26T13:00:11.210 回答
0

我想我找到了解决办法。我通过将背景资源设置为序列的最后一个可绘制对象,将其设置AnimationDrawable为 null 然后调用垃圾回收来解决了这个问题

animationDrawable = null;
imageView.setBackgroundResource(R.drawable.last_png);
System.gc();
于 2012-08-26T09:40:42.350 回答
0

gc() 仅在需要时运行,并且调用表示您愿意完成它。但是当你真的需要内存时,调用它是没有用的。调用 gc 并不能保证内存已被清理并且您将有足够的空间运行。

您需要删除已使用的资源并根据需要加载它们以保持较低的 ram 使用率。

于 2012-08-26T10:40:18.033 回答