gpt4 book ai didi

java - 第二次处理Bitmaps时出现OutOfMemoryError

转载 作者:行者123 更新时间:2023-11-30 11:50:31 26 4
gpt4 key购买 nike

我正在一个 Activity 中处理许多位图以创建一个 AnimationDrawable,它工作得很好(即使它使用大量内存)。但是当用户按下并返回到 MainActivity 时,内存并没有被释放。

那一刻:

  • 如果用户随后重新启动第二个 Activity 以创建另一个 ActivityAnimationDrawable,会出现OOMError,因为内存分配给我的 App 不能同时包含两个 AnimationDrawables时间。
  • 如果用户调用 finish(),应用会保持缓存状态,内存也不会被释放。

如何释放内存?我尝试在第二个 Activity 结束时将所有变量设置为 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次,因此动画相当“重”。我该如何摆脱它?我希望应用程序在第二个 Activity 暂停后立即“忘记它”。

非常感谢。 :)

最佳答案

当您不再需要 Bitmap 对象时调用 .recycle() 方法:

http://developer.android.com/reference/android/graphics/Bitmap.html#recycle ()

关于java - 第二次处理Bitmaps时出现OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945723/

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