Поймите роль SoftReference <Bitmap>в HashMap - PullRequest
1 голос
/ 03 января 2012
// 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));

Насколько я понимаю, если попытаться использовать ссылку в этом кеше, если он не существует, тогда весь кеш будет очищен и начнется с пустого значения?

1 Ответ

2 голосов
/ 03 января 2012

Похоже, ваше понимание неверно.Кэш - это просто HashMap из String -> SoftReference.Все, что вы поместите в HashMap, будет существовать до тех пор, пока вы его не удалите.

Если вы получаете SoftReference из HashMap, он может или не может ссылаться на растровое изображение, которое он содержит.Если этого не произойдет, вы должны перезагрузить растровое изображение.Но SoftReference продолжает существовать в любом случае.Кроме того, нет никаких причин, по которым весь HashMap («Кэш») должен или должен быть очищен и перестроен в случае потери одного SoftReference ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...