私は次のコードを持っています:
loadedImageDraggable.setBitmap(bitmap);
Log.v(TAG, "recycled image1 :"+bitmap);
Log.v(TAG, "recycled image2 :"+loadedImageDraggable.getBitmap());
bitmap.recycle();
bitmap = null;
Log.v(TAG, "recycled image3 :"+bitmap);
Log.v(TAG, "recycled image4 :"+loadedImageDraggable.getBitmap());
したがって、これをコーディングしたときに期待したのは、ビットマップオブジェクトがメモリから削除されることです。コードを実行したときに実際に得たのは、次のログトレースです。
recycled image1 :android.graphics.Bitmap@41afa8e0
recycled image2 :android.graphics.Bitmap@41afa8e0
recycled image3 :null
recycled image4 :android.graphics.Bitmap@41afa8e0
最後の行で、loadedImageDraggableにラップされたこのビットマップオブジェクトがまだ残っていることがわかります。オブジェクトは参照を介してメソッドに渡されるため、オブジェクトがnullに設定されたときに、Javaがそのビットマップオブジェクトへのすべての参照をクリーンアップすることを期待していました。私は混乱しています:/誰かが私のためにこれを片付けることができますか?