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