播放png序列后的内存问题

时间:2012-08-26 09:05:15

标签: android memory-management android-animation

我正在使用AnimationDrawable播放一个工作正常的PNG序列..问题是在添加此部分之后应用程序从使用~7MB RAM到~32MB ...

我知道我们不能直接调用释放内存,但是在Animation之后没有某种方法可以最小化内存使用。

3 个答案:

答案 0 :(得分:0)

我想我找到了解决方案。我通过将后台资源设置为序列的最后一个drawable来修复问题,将AnimationDrawable设置为null然后调用垃圾收集

animationDrawable = null;
imageView.setBackgroundResource(R.drawable.last_png);
System.gc();

答案 1 :(得分:0)

gc()仅在需要时运行并且调用表示您已完成此操作。但是当你真的需要记忆时,打电话就不会有好处。调用gc不能保证内存 被清理干净,你就足够了。

您需要删除已完成的资源并根据需要加载它们以降低您的ram使用率。

答案 2 :(得分:0)

Animation Drawable causing OutOfMemoryError on second run in Android

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

这似乎是一个常见问题。到目前为止,上述链接是最佳答案。