Java 第二次处理位图时发生OutOfMemoryError

Java 第二次处理位图时发生OutOfMemoryError,java,android,bitmap,out-of-memory,Java,Android,Bitmap,Out Of Memory,我在一个活动中处理许多位图来创建一个AnimationDrawable,它工作得非常好(尽管它使用了大量内存)。但是,当用户按下back键并返回MainActivity时,内存不会被释放 当时: 如果用户随后重新启动第二个活动以创建另一个活动 AnimationDrawable,由于内存 分配给我的应用程序不能同时包含两个AnimationDrawable 时间 如果用户调用finish(),应用程序将保持缓存状态,并且内存也不会释放 我该如何释放那些记忆?我尝试将所有变量设置为null在第

我在一个活动中处理许多位图来创建一个AnimationDrawable,它工作得非常好(尽管它使用了大量内存)。但是,当用户按下back键并返回MainActivity时,内存不会被释放

当时:

  • 如果用户随后重新启动第二个活动以创建另一个活动 AnimationDrawable,由于内存 分配给我的应用程序不能同时包含两个AnimationDrawable 时间
  • 如果用户调用finish(),应用程序将保持缓存状态,并且内存也不会释放
我该如何释放那些记忆?我尝试将所有变量设置为null在第二个活动结束时,我尝试在不同时刻调用system.gc()

该部分代码应足够:

try {
        d = (BitmapDrawable) BitmapDrawable.createFromStream(new BufferedInputStream(new FileInputStream(src)), null);
        b = ((BitmapDrawable) d).getBitmap();
        b = Bitmap.createScaledBitmap(b, 300, 450, true);
        d = new BitmapDrawable(b);

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
        animation.addFrame(d,1000/fps); // animation is an AnimationDrawable
这部分代码在for循环中,通常重复70到100次,因此动画相当“沉重”。我怎样才能摆脱它?我希望应用程序在第二个活动暂停后立即“忘记它”

非常感谢。:)

不再需要位图对象时调用.recycle()方法:

()

看看这个答案