gpt4 book ai didi

android - 添加到 AnimationDrawable 的图像以编程方式泄漏内存

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:50 24 4
gpt4 key购买 nike

我有一个带有大量动画的安卓应用。

当我以编程方式创建动画(使用 AnimationDrawable)时,非 java 对象(出现在 DDMS 堆选项卡中)随着我加载的每个新动画而增长,并且永远不会收缩即使在我的动画发布之后。

我从我编写的包装器对象中只有一个对每个 AnimationDrawable 对象的引用,并且我通过覆盖 finalize 方法并确保它被调用来验证该对象已被释放.

最终 android 停止加载图像并将“内存不足”错误打印到日志中。

有趣的是,这种情况只发生在某些设备(Motorola Xoom、Sony Experia)上,而不会发生在其他设备(例如 Galaxy S)上。

从我给出的设备示例中可以看出,这个问题不是特定的 Honeycomb 或 pre-Honeycomb。

我尝试过的一些事情:

  1. 在我完成当前动画后在每个帧上调用回收,但它似乎没有帮助。
  2. 将 null 分配给 AnimationDrawble 对象
  3. 确保没有与持有动画可绘制引用的类相关的静态变量
  4. 确保在我注释掉 myAnimation.addFrame(...)
  5. 后问题消失

最佳答案

这不是一个确切的答案,而是一个有用的提示,可以帮助您找到确切的泄漏发生位置。在您希望回收内存后执行堆转储,看看为什么您认为应该死的对象仍然存在。

确保您获得了用于 eclipse 的内存分析器工具。 (http://www.eclipse.org/mat/)

关于android - 添加到 AnimationDrawable 的图像以编程方式泄漏内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658809/

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