【发布时间】:2012-09-14 09:57:15
【问题描述】:
我有以下代码:
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中。由于对象是通过引用传递给方法的,所以我希望 java 在对象设置为 null 时清除对该位图对象的所有引用。 我很困惑 :/ 有人可以帮我解决这个问题吗?
【问题讨论】:
-
loadedImageDragable属于哪个类?无论如何,它可能不是返回它的主实例而是一个副本。 -
no- 类中没有位图复制操作。内部 Bitmap 属性只有一个 getter 和一个 setter。
标签: java android pointers memory-management garbage-collection