当我开始第二个动画可绘制时,如何避免内存不足

时间:2016-04-26 23:35:40

标签: android animation out-of-memory

我是Android的新手,现在我完全迷失了...你能给我一些代码提示吗? 我试图使用我之前复制到项目的res文件夹的一些图像中的AnimationDrawable运行定格动画。动画中使用的图像是在运行时选择的,因此我使用addFrame来包含它们。当用户按下按钮时,动画将与所选图像成功启动。然后要求用户选择新图像,再次按下按钮后,应开始新动画。问题是它会导致OUT OF MEMORY错误。这些错误不会发生在第一个动画中,因此我似乎在浪费手机(或仿真器)的内存以及连续的动画。如何在开始第二个动画之前释放第一个动画中使用的内存?

我尝试使用((BitmapDrawable)框架。)。getBitmap()。recycle();但后来我无法将图像用于第二个动画。

有什么建议吗?

这是我的代码的相关部分,我想:

int globeId = this.getResources().getIdentifier(resname1, "drawable",
                this.getPackageName());

        animation.addFrame(this.getResources().getDrawable(globeId), velocidad);
        int globeId = this.getResources().getIdentifier(resname2, "drawable",
                this.getPackageName());
        animation.addFrame(this.getResources().getDrawable(globeId), velocidad);
        ...

        animation.setOneShot(true);
        imageAnim.setBackgroundDrawable(animation);
        animation.start();

这就是错误:

   D/dalvikvm: GC_FOR_ALLOC freed 1251K, 5% free 59812K/62471K, paused 4ms, total 4ms
   D/dalvikvm: GC_FOR_ALLOC freed <1K, 3% free 61062K/62471K, paused 4ms, total 4ms
   I/dalvikvm-heap: Forcing collection of SoftReferences for 5119532-byte allocation
   D/dalvikvm: GC_BEFORE_OOM freed 9K, 3% free 61052K/62471K, paused 4ms, total 6ms
   E/dalvikvm-heap: Out of memory on a 5119532-byte allocation.

0 个答案:

没有答案