【问题标题】:Android setBackgroundResource release memory?Android setBackgroundResource 释放内存?
【发布时间】:2011-04-02 01:00:00
【问题描述】:

我有 2 个安静的大动画,每个 50pics 和 20kb 两者都定义为 Animations .xml

我让一个从头开始,第二个在单击按钮后开始。

//Start immediatly
  imgView.setBackgroundResource(R.layout.anim1);
                rocketAnimation = (AnimationDrawable) imgView.getBackground();

//Start after button click
  imgView.setBackgroundResource(R.layout.anim2);
                rocketAnimation = (AnimationDrawable) imgView.getBackground();

它工作正常,直到我按下按钮并将第二个动画分配给我的视图

08-22 14:56:03.886: DEBUG/AndroidRuntime(1541): Shutting down VM
08-22 14:56:03.886: WARN/dalvikvm(1541): threadid=3: thread exiting with uncaught exception (group=0x4001da28)
08-22 14:56:03.886: ERROR/AndroidRuntime(1541): Uncaught handler: thread main exiting due to uncaught exception
08-22 14:56:04.096: ERROR/AndroidRuntime(1541): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
08-22 14:56:04.096: ERROR/AndroidRuntime(1541):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)

看起来每个动画本身都很好(我什至可以在自动启动时设置 anim2)。但两者都会超出内存。

顺便说一句。在我的 Nexus One 上运行完美。它失败的地方是 G1 1.6(即使在模拟器中)。

那么在分配 anim2 之前如何先释放 anim1 呢??

谢谢 克里斯

【问题讨论】:

    标签: android memory-management animation


    【解决方案1】:

    尝试在 imgView.setBackgroundResource(R.layout.anim2);

    行之前添加 imgView.setBackgroundResource(0);

    【讨论】:

      【解决方案2】:

      尝试运行

      rocketAnimation.setCallback(null);
      

      在显示 anim2 之前。

      顺便说一句:N1 每个应用程序允许的堆 (24mb) 比 G1 (16mb) 多。三星 Galaxy S 拥有更多 (48MB)。但是通过参数你也可以为模拟器设置更高的堆限制; (不幸的是,这不适用于无根手机)。

      【讨论】:

      • 嗨,我现在试过了......没有帮助,仍然只是崩溃:(正如提到的每一个都可以自我工作。所以这个动画之一的内存就足够了。但看起来是最后一个动画没有发布。
      • 也许动画对于设备来说太简单了。你可以计算它吃掉的内存。请参阅我在stackoverflow.com/questions/3238388/… 上的回复...图像的文件大小(即20kB)并不重要,重要的是它的宽度和高度。因为它在内部全部转换为位图,因此相关的是这些正在使用的内存。
      • 感谢现在我的应用程序在 2.2 上运行良好(这里的内存管理要好得多)... 将尝试使用 1.6 - 2.0 的代码现在它在 2.2 中说:08-22 15: 16:30.564: DEBUG/1(27859): debug.heap native: 在 [com.chris.myapp.mainactivity] 中分配了 3.66MB 的 3.70MB (0.03MB 免费) 08-22 15:16:30.564: DEBUG/1( 27859): debug.memory: 分配: 2.00MB of 24.00MB (0.00MB free)
      猜你喜欢
      • 2014-06-13
      • 2012-12-15
      • 2020-05-21
      • 2012-02-25
      • 2019-01-20
      • 2019-01-08
      • 2011-12-08
      • 2013-07-26
      • 1970-01-01
      相关资源
      最近更新 更多