Android 了解SoftReference的作用<;位图>;在HashMap中 //图像的全局缓存。 //如果需要,使用SoftReference允许垃圾收集器清理缓存 私有最终HashMap缓存=新HashMap(); SoftReference ref=Cache.get(item.url.toString()); Cache.put(item.url.toString(),新的SoftReference(bmp));

Android 了解SoftReference的作用<;位图>;在HashMap中 //图像的全局缓存。 //如果需要,使用SoftReference允许垃圾收集器清理缓存 私有最终HashMap缓存=新HashMap(); SoftReference ref=Cache.get(item.url.toString()); Cache.put(item.url.toString(),新的SoftReference(bmp));,android,hashmap,Android,Hashmap,我的理解是,如果尝试在这个缓存中引用,如果它不存在,那么整个缓存将被清理并从空开始?听起来你的理解是不正确的。缓存只是字符串->软引用的哈希映射。在删除HashMap之前,您放置到HashMap中的任何内容都将存在 如果您从HashMap获得SoftReference,它可能会也可能不会实际引用它包含的位图。如果没有,则必须重新加载位图。但在这两种情况下,SoftReference仍然存在。此外,如果单个软引用丢失,没有理由或需要清理和重建整个HashMap(“缓存”) // Global ca

我的理解是,如果尝试在这个缓存中引用,如果它不存在,那么整个缓存将被清理并从空开始?

听起来你的理解是不正确的。缓存只是字符串->软引用的哈希映射。在删除HashMap之前,您放置到HashMap中的任何内容都将存在

如果您从HashMap获得SoftReference,它可能会也可能不会实际引用它包含的位图。如果没有,则必须重新加载位图。但在这两种情况下,SoftReference仍然存在。此外,如果单个软引用丢失,没有理由或需要清理和重建整个HashMap(“缓存”)

// 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));