gpt4 book ai didi

java - ViewFlipper 中动画的 OutOfMemory

转载 作者:行者123 更新时间:2023-11-29 21:57:11 25 4
gpt4 key购买 nike

我知道在不同情况下有很多关于 Android 中 OOM 的问题和论坛,但我找不到完整的解决方案。

我有一个 Activity ,用户可以在其中滚动许多动画。由于滚动时只有动画应该移动,并且在开始时它必须在没有用户交互的情况下移动,所以我使用了一个包含动画的 ViewFlipper。如下图示意性所示: enter image description here

问题是,在平板电脑和 3.0 以上的设备上,它会在翻转一些动画并播放它们后抛出 OOM。为了解决问题,我到目前为止所做的尝试:

  1. 我使用 BitmapFactory.Options 缩小了动画图像(我按照教程 Loading Large Bitmaps Efficientlytutorial ).我在教程中唯一没有实现的是缓存。
  2. 既然有很多动画,那么多位图,我一次只加载 3 个动画(当前 View ,左和右),但添加和删除位图有拖慢了应用程序的速度。
  3. 我试图让垃圾收集器更快地释放我的图像,方法是手动调用所有可能有用的东西:setCallback(null)setImageDrawable(null)destroy(), destroyDrawingCache()(最后两个用于 AdView)。我什至尝试了 recycle()(对于位图),但它导致了其他异常

经过上述更改后,有一些改进,但我仍然在模拟器 Android 4.x WVGA854 或 WVGA800 上收到 OOM(经过较长时间)。但即使它没有出现 OOM,内存分析也显示 80% 的负载加载到一开始就有问题的设备上。此外,由于动画的删除和添加,所有设备上的用户体验都很差。

我开始认为这更像是一个架构/设计问题。 可能是模拟器的问题?您现在的内存分析器是否比 DDMS 的分析器更好?

如果有任何建议,我将不胜感激,我不知道还能尝试什么:)

最佳答案

通常我用它来防止内存不足的问题

bmp.recycle();
bmp = null;
System.runFinalization();
Runtime.getRuntime().gc();
System.gc();

我是用位图后调用的

如果还是不行,也许你应该在真机上试试

关于java - ViewFlipper 中动画的 OutOfMemory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com