我正在使用AnimationDrawable
播放一个工作正常的PNG序列..问题是在添加此部分之后应用程序从使用~7MB RAM到~32MB ...
我知道我们不能直接调用释放内存,但是在Animation
之后没有某种方法可以最小化内存使用。
答案 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();
这似乎是一个常见问题。到目前为止,上述链接是最佳答案。