Android中内存的位图的可绘制优势

时间:2010-12-31 15:39:56

标签: android bitmap memory-management drawable

此问题与以下问题的答案相关联:

Error removing Bitmaps[Android]

在内存解除分配方面,在Android中使用Drawable over Bitmap是否有任何优势?

我正在查看Romain Guy项目Shelves,他使用SoftReference进行图像缓存,但是当SoftReference自动回收Bitmap的内存时,我无法搜索解除分配这些Drawables的代码。据我所知,必须在Bitmap上显式调用.recycle()才能对其进行解除分配。

3 个答案:

答案 0 :(得分:10)

根据我的理解,如果您不需要进行太多图像处理,则位图通常会提高性能。但是,当我不手动回收它时,我遇到了内存泄漏。我的解决方案是write a class来帮助我管理我的图像,这提供了一种简单的方法来回收我的应用程序中某些点的所有位图。它还提供了一种简单的方法来重用已经加载的资源(包括Drawables)。

答案 1 :(得分:9)

您无需调用Bitmap.reycle()。这将在终结器中完成。在终结器中执行此操作意味着分配将延迟到终结器运行,因此在可能的情况下直接调用recycle()可以帮助进行内存管理。

答案 2 :(得分:0)

度Acc。到this page,从API Level 11开始,Bitmap像素数据与相关的Bitmap一起存储在Dalvik Heap中。因此,实际上不需要调用.recycle,除非您想手动回收内存以供进一步使用。请务必取消引用位图,这只是一个附加措施。

PS:这是解释hackbod答案的链接。