5
我看之間有什麼區別兩條線永遠在一起:如果設置MYBITMAP = null,不必再循環(),與循環()
myBitmap.recycle();
myBitmap = null;
如果我只用:
myBitmap = null;
有什麼區別?
謝謝。
我看之間有什麼區別兩條線永遠在一起:如果設置MYBITMAP = null,不必再循環(),與循環()
myBitmap.recycle();
myBitmap = null;
如果我只用:
myBitmap = null;
有什麼區別?
謝謝。
根據文檔:
public void recycle()
免與該位圖相關聯的原生對象,並清除 參考像素數據。這不會同步釋放像素數據 ; 它只是允許它被垃圾回收,如果 沒有其他參考。位圖被標記爲「死」,這意味着如果調用getPixels()或setPixels(),則 將拋出異常,並且 將不會繪製任何內容。該操作不能顛倒,因此只有在確認 位圖沒有其他用途時才應調用 。這是一個高級調用,通常不需要調用, ,因爲當沒有對此位圖的更多引用時,正常的GC進程將釋放此內存。
所以基本上,
myBitmap = null;
刪除該位圖具體參考它指向。如果它是唯一的引用,則該位圖將被垃圾收集器清除。
然而,
myBitmap.recycle();
myBitmap = null;
移除隱藏參考用於該位圖的像素數據。然後它刪除您對位圖的特定引用。所以兩者都會被垃圾收集。除非你有一個巨大的位圖,或由於某種原因有限的內存,你可能不需要擔心調用myBitmap.recycle()。
檢查這裏尋找答案:http://stackoverflow.com/questions/6260787/diff-b-w-bitmap-recycle-and-bitmap-null – Voicu