3

I need to put a data object into my weakhashmap containing softreferences. How do I convert my "Drawable" object into a softreference?

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 should be putting "sPulled" , the softreference

CQM
  • 42,592
  • 75
  • 224
  • 366

2 Answers2

3

I think this is what you are looking for

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

But you probably want to add a queue to remove the SoftRefence from the map should the referenced object be removed (or your cache will grow with keys and empty softrefences.

Roger Lindsjö
  • 11,330
  • 1
  • 42
  • 53
0

Take a look at Guava's MapMaker class, which allows you to specify soft values. Way easier than reimplementing it yourself.

Steven Schlansker
  • 37,580
  • 14
  • 81
  • 100