我看到两条线总是在一起:
myBitmap.recycle();
myBitmap = null;
如果我只使用:
myBitmap = null;
有什么区别?
感谢。
答案 0 :(得分:8)
根据文件:
public void recycle()
释放与此位图关联的本机对象,然后清除 参考像素数据。这不会释放像素数据 同步; 它只是允许它被垃圾收集,如果有的话 没有其他参考。位图标记为“死”,意思是它 如果调用getPixels()或setPixels(),则会抛出异常 什么都不会。这个操作无法逆转,所以应该如此 只有在你确定没有进一步的用途时才被调用 位图。这是一个高级调用,通常不需要调用, 因为正常的GC过程会在没有时释放这个内存 更多对此位图的引用。
基本上,
myBitmap = null;
删除对其指向的位图的特定引用。如果它是唯一的引用,那么该位图将被垃圾收集器清理。
然而,
myBitmap.recycle();
myBitmap = null;
删除对该位图的像素数据的隐藏引用。然后删除您对位图的特定引用。所以两者都将被垃圾收集。除非你有一个巨大的位图,或者由于某些原因内存有限,否则你可能不必担心调用myBitmap.recycle()。