Java ViewFlipper中动画的OutOfMemory
我知道在不同的情况下,有很多关于Android中OOM的问题和论坛,但我找不到一个完整的解决方案 我有一个活动,用户可以在多个动画之间滚动。因为只有动画应该在滚动时移动,并且在开始时它必须在没有用户交互的情况下移动,所以我使用了一个带有动画的ViewFlipper。如下图示意图所示: 问题是,在3.0以上的平板电脑和设备上,它在翻转一些动画并播放它们之后会抛出OOM。为了解决这个问题,我一直在尝试:Java ViewFlipper中动画的OutOfMemory,java,android,android-layout,memory,memory-management,Java,Android,Android Layout,Memory,Memory Management,我知道在不同的情况下,有很多关于Android中OOM的问题和论坛,但我找不到一个完整的解决方案 我有一个活动,用户可以在多个动画之间滚动。因为只有动画应该在滚动时移动,并且在开始时它必须在没有用户交互的情况下移动,所以我使用了一个带有动画的ViewFlipper。如下图示意图所示: 问题是,在3.0以上的平板电脑和设备上,它在翻转一些动画并播放它们之后会抛出OOM。为了解决这个问题,我一直在尝试: 我使用BitmapFactory.Options缩小了动画图像的比例 遵循教程)。我在教程中唯
setCallback(null)
,setImageDrawable(null)
,destroy()
,destrowingDrawingCache()
(最后两个用于AdView)。我甚至尝试了recycle()
(对于位图),但它导致了其他异常如果有任何建议,我将不胜感激,我不知道还有什么可以尝试:)通常我会用它来防止内存不足的问题
bmp.recycle();
bmp = null;
System.runFinalization();
Runtime.getRuntime().gc();
System.gc();
我在使用位图后调用它
如果它仍然不起作用,也许你应该在真正的设备上试用它你试过使用system.gc()吗?谢谢!正如我在下面所说的,我们似乎应该尽量避免这一呼吁,正如这个问题所显示的那样。但是我会试试看区别。谢谢,我试过bmp.recycle,但我没有真正的帮助(你也需要在同一个活动中加载许多位图吗?)。关于System.gc(),我读到调用它是不合适的,因为有一个复杂的循环算法,通过手动调用gc,该算法变得无用,所以我避免了。嗯,是的,我需要在同一个活动中加载多个位图,System.gc()解决了这个问题,但是如果你不想使用它,也许是其他的解决方案,比如使用片段?你试过了吗?框架似乎是个很好的主意,我会试试。非常感谢你,纳约佐:)