// Global cache of images.
// Using SoftReference to allow garbage collector to clean cache if needed
private final HashMap<String, SoftReference<Bitmap>> Cache = new HashMap<String,  SoftReference<Bitmap>>();

 SoftReference<Bitmap> ref = Cache.get(item.url.toString());

 Cache.put(item.url.toString(), new SoftReference<Bitmap>(bmp));


我的理解是,如果尝试在此Cache中查找引用(如果它不存在),那么将清除整个Cache并从空开始?

最佳答案

听起来您的理解是错误的。缓存只是一个String-> SoftReference的HashMap。您放入HashMap的所有内容都将存在,直到您将其删除为止。

如果从HashMap获得SoftReference,则它可能会或可能不会实际引用其包含的位图。如果不是,则必须重新加载位图。但是无论哪种情况,SoftReference仍然存在。此外,如果丢失了一个SoftReference,就没有理由要清理或重建整个HashMap(“缓存”)...

关于android - 了解HashMap中的SoftReference <Bitmap>的作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8717744/

10-10 04:25