2013-06-28 30 views

回答

7

根據文檔:

public void recycle() 

免與該位圖相關聯的原生對象,並清除 參考像素數據。這不會同步釋放像素數據 ; 它只是允許它被垃圾回收,如果 沒有其他參考。位圖被標記爲「死」,這意味着如果調用getPixels()或setPixels(),則 將拋出異常,並且 將不會繪製任何內容。該操作不能顛倒,因此只有在確認 位圖沒有其他用途時才應調用 。這是一個高級調用,通常不需要調用, ,因爲當沒有對此位圖的更多引用時,正常的GC進程將釋放此內存。

所以基本上,

myBitmap = null; 

刪除該位圖具體參考它指向。如果它是唯一的引用,則該位圖將被垃圾收集器清除。

然而,

myBitmap.recycle(); 
myBitmap = null; 

移除隱藏參考用於該位圖的像素數據。然後它刪除您對位圖的特定引用。所以兩者都會被垃圾收集。除非你有一個巨大的位圖,或由於某種原因有限的內存,你可能不需要擔心調用myBitmap.recycle()。