Domyślam się, że tytuł mówi wszystko. Próbowałem:Sprawdź, czy obraz jest w pamięci podręcznej - Universal Image Loader
imageLoader.getMemoryCache().get(key);
z URI obraz jako klucz, ale zawsze powrócić null
choć włączone buforowanie w config.
Domyślam się, że tytuł mówi wszystko. Próbowałem:Sprawdź, czy obraz jest w pamięci podręcznej - Universal Image Loader
imageLoader.getMemoryCache().get(key);
z URI obraz jako klucz, ale zawsze powrócić null
choć włączone buforowanie w config.
Użyj MemoryCacheUtils
.
MemoryCacheUtils.findCachedBitmapsForImageUri(imageUri, ImageLoader.getInstance().getMemoryCache());
Pamięć podręczna pamięci może zawierać kilka bitmap (różne rozmiary) dla jednego obrazu. Pamięć podręczna pamięci używa specjalnych klawiszy, a nie adresów URL obrazu.
Należy MemoryCacheUtil s, więc należy użyć
MemoryCacheUtils.findCachedBitmapsForImageUri(imageUri, ImageLoader.getInstance().getMemoryCache());
Czasami podczas korzystania z biblioteki Loader Obraz uniwersalny, przychodzi czas, w którym ładowarka zajmuje trochę czasu, aby sprawdzić, czy pilot obraz ma został już załadowany do Twojej pamięci podręcznej. Aby wczytać plik cache bezpośrednio, można użyć następującej metody, aby sprawdzić, czy lokalna kopia pliku zdalnego została już wykonana:
File file = imageLoader.getDiscCache().get(url);
if (!file.exists()) {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisc()
.build();
imageLoader.displayImage(url, imageView, options);
}
else {
imageView.setImageURI(Uri.parse(file.getAbsolutePath()));
}
to sprawdzić tutaj enter link description here
myślę, że można stworzyć prosty metoda w klasie użytkowej tak:
public static boolean isImageAvailableInCache(String imageUrl){
MemoryCache memoryCache = ImageLoader.getInstance().getMemoryCache();
if(memoryCache!=null) {
for (String key : memoryCache.keys()) {
if (key.startsWith(imageUrl)) {
return true;
}
}
}
return false;
}
i używać go jak:
if(Utils.isImageAvailableInCache(imageUrl)){
//
}
Do buforowania dysku użyj kodu poniżej:
public static boolean isDiskCache(String url) {
File file = DiskCacheUtils.findInCache(url, ImageLoader.getInstance().getDiskCache());
return file != null;
}
Tak, to działa, dziękuję. – FWeigl
@NOSTRA to nie działa dla mnie. Jeśli używam: MemoryCacheUtil.findCachedBitmapsForImageUri (url, ImageLoader.getInstance()); prosi mnie o casting, więc ... czy to prawda? MemoryCacheUtil.findCachedBitmapsForImageUri (url, (MemoryCacheAware) ImageLoader.getInstance()); –
cesards
Naprawiono odpowiedź. – NOSTRA