Ответ 1
UIL всегда проверяет кеши перед отображением. Таким образом, избежать изменений без источников невозможно.
Но я думаю, что вы можете решить свою проблему, расширив кеш диска. Цель состоит в том, чтобы вернуть несуществующий файл из метода get()
, когда вы хотите загрузить полноразмерное изображение.
Поэтому вы должны делать как обычно для загрузки эскизов. Когда вам нужно отобразить полноразмерное изображение, вы должны отключить кеширование на диске в параметрах отображения (DisplayImageOptions
), а затем сделать что-то вроде этого:
((MyDiscCache) imageLoader.getDiscCache()).setIgnoreDiskCache(true);
Итак, ваш кеш должен вернуть любой несуществующий файл (но не null).
Когда вы вернетесь к отображению эскизов, вы должны "включить" (setIgnoreDiskCache(false)
) диск обратно.
UPD: Создайте свой собственный кэш диска и настройте его на конфигурацию.
public class MyDiscCache extends UnlimitedDiscCache {
private boolean ignoreDiskCache;
public MyDiscCache(File cacheDir) {
super(cacheDir);
}
public MyDiscCache(File cacheDir, FileNameGenerator fileNameGenerator) {
super(cacheDir, fileNameGenerator);
}
@Override
public File get(String key) {
if (ignoreDiskCache) {
return new File("fakePath");
} else {
return super.get(key);
}
}
public void setIgnoreDiskCache(boolean ignoreDiskCache) {
this.ignoreDiskCache = ignoreDiskCache;
}
}