根据http://developer.android.com/training/displaying-bitmaps/manage-memory.html
在Android 2.3.3(API级别10)及更低版本上,使用recycle()是 推荐的。如果您正在显示大量的位图数据 应用程序,您可能会遇到OutOfMemoryError错误。回收() 方法允许应用程序尽快回收内存。
我想知道,对于BitmapDrawable
,我是否需要执行像
bitmapDrawable.getBitmap().recycle()
如果不再需要它?
答案 0 :(得分:2)
这是一个高级调用,通常不需要调用,因为 正常的GC过程将在没有更多时释放这个内存 对此位图的引用。
所以我会选择:不,你不需要打电话。但是,通过清除您的参考资料,释放您的位图资源。
您添加的链接几乎告诉您为什么它可能在之前和之后有所帮助:
在Android 2.3.3(API级别10)及更低版本上,支持像素数据 位图存储在本机内存中。它与位图分开 本身,存储在Dalvik堆中。本机中的像素数据 内存不会以可预测的方式释放,可能导致内存 应用程序短暂超出其内存限制和崩溃。作为 Android 3.0(API Level 11),像素数据存储在Dalvik上 堆以及相关的位图。
答案 1 :(得分:1)
最好在不使用时回收位图。您可以在onResume()中加载bimaps并在onPause()中回收它们。
因此,为了减少内存消耗并避免内存泄漏,最好在不使用时回收位图。
另请参阅链接
中的内存管理讲座http://www.youtube.com/watch?v=_CruQY55HOk
编辑:
您发布的链接的引号。 (您可以在Android 2.3.3及更低版本的管理内存标题下查看
在Android 2.3.3(API级别10)及更低版本上,建议使用recycle()。
从HoneyComB开始,位图存储在HEAP而不是它们的本机位图堆中。
Android 3.0(API Level 11)引入了BitmapFactory.Options.inBitmap字段。如果设置了此选项,则采用Options对象的解码方法将在加载内容时尝试重用现有位图。这意味着重用了位图的内存,从而提高了性能,并删除了内存分配和取消分配
http://developer.android.com/training/displaying-bitmaps/manage-memory.html