は、私が見るとの間にどのような違いの2行は、常に一緒にせずにmyBitmap = nullを設定した場合:リサイクル()、リサイクル()
myBitmap.recycle();
myBitmap = null;
私だけを使用する場合:
myBitmap = null;
何の違い?
ありがとうございました。
は、私が見るとの間にどのような違いの2行は、常に一緒にせずにmyBitmap = nullを設定した場合:リサイクル()、リサイクル()
myBitmap.recycle();
myBitmap = null;
私だけを使用する場合:
myBitmap = null;
何の違い?
ありがとうございました。
ドキュメントによれば:
public void recycle()
無料このビットマップに関連付けられているネイティブ・オブジェクト、及び画素データ 基準をクリアします。これによりピクセルデータ が同期して解放されることはありません。 が他の参照でない場合、単にガーベジコレクションすることができます。ビットマップは "dead"とマークされます。つまり、 は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