Java,将对象转换为softreference

时间:2011-12-10 21:34:51

标签: java memory-management soft-references weakhashmap

我需要将一个数据对象放入包含软引用的weakhashmap中。如何将“Drawable”对象转换为软引用?

WeakHashMap <String, SoftReference<Drawable>> tempPulled = new WeakHashMap<String,     SoftReference<Drawable>>();
Drawable pulled = BitmapDrawable.createFromResourceStream(null, null, conn.getInputStream(), "galleryImage", options);
SoftReference<Drawable> sPulled;            
tempPulled.put(id, pulled);

tempPulled应该放置“sPulled”,即软引用

2 个答案:

答案 0 :(得分:3)

我认为这就是你要找的东西

SoftReference<Drawable> sPulled = new SoftReference<Drawable>(pulled);            

但是如果删除引用的对象(或者你的缓存会随着键和空的softrefences一起增长,你可能想要添加一个队列来从地图中删除SoftRefence。

答案 1 :(得分:0)

查看Guava's MapMaker类,它允许您指定软值。比自己重新实现它更容易。