【发布时间】:2012-06-27 11:23:24
【问题描述】:
根据 Android Developers 网站,Bitmap.recycle() 方法定义为:
释放与该位图关联的原生对象,并清除对像素数据的引用
我开发了一些创建/解码大量位图的应用程序,并将结果位图对象放到ImageViews。有时我会遇到一些著名的例外情况,例如:
位图大小超出虚拟机预算
和
内存不足错误
此外,我确定我没有任何可能导致这种情况的内存泄漏。
经过大量搜索,我发现了“回收”方法,并在不再需要时使用它来释放位图的本机内存。 好像帮了很多忙。
我想问在这种情况下我是否应该这样做,因为 我知道系统在没有明确调用它的情况下无论如何都会这样做(是吗?也许我错了)。
我应该在这种情况下使用这种方法吗?
在什么情况下我应该使用这种方法?
我应该使用这种方法吗?
提前致谢。
更新:
google 最近发布了this 指南,上面写着:
在 Android 2.3.3(API 级别 10)及更低版本上,建议使用 recycle()。如果您在应用程序中显示大量位图数据,您可能会遇到 OutOfMemoryError 错误。 recycle() 方法允许应用尽快回收内存。
【问题讨论】:
-
无需致电
recyle。它可以提供帮助,但前提是您正确使用它。实际上,为您的Bitmap对象创建一个WeakReference并返回它要容易得多。 You should watch this Google IO talk -
@aneal:谢谢,很久以前就看过那个视频了。
标签: android bitmap garbage-collection out-of-memory android-imageview