Мм. В автономном режиме какое значение будет иметь значение mArtistImageURL? Ноль? Итак, в этот момент aq.cache(mArtistImageURL, 60000 * 1440);
вы кешируете ноль, а на следующей строке вы пытаетесь получить кеш для нуля? Я прав?
Обновление: я предполагаю, что вы кэшируете изображения, используя значение хэша url для имени файла или что-то вроде этого. Таким образом, измените метод кэширования, чтобы он принимал дополнительный параметр для имени файла, например aq.cache(mArtistImageURL,mArtistNameWithoutSpaces, 60000 * 1440);
, и когда вы хотите, чтобы файл был отключен, просто вызовите aq.getCachedImage(mArtistNameWithoutSpaces);
, чтобы он посмотрел на вашу папку кэша и возвратил нужный файл, или заглушки, если файл отсутствует найдено.
Обновление 2: хорошо, если вы не хотите изменять методы кэширования AQuery, вы можете попробовать (снова), используя общие настройки (чтобы они работали), например (не проверено):
public String getUrlForArtist(String artistName) {
SharedPreferences settings = mContext.getSharedPreferences(
"artistImages", 0);
return settings.getString(artistName, "http://default.url");
}
public void setUrlForArtist(String artistName, String url) {
SharedPreferences settings = mContext.getSharedPreferences(
"artistImages", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(artistName, url);
editor.commit();
}
В итоге ваш код будет выглядеть примерно так:
if (MusicUtils.isOnline(mContext)) {
mArtistResults = Artist.getImages("Andrew Bird", 1, 1, key);
mArtistIterator = mArtistResults.getPageResults().iterator();
while (mArtistIterator.hasNext()) {
mArtistImageURL = mArtistIterator.next().getImageURL(
ImageSize.ORIGINAL);
if(mArtistImageURL!=null)
setUrlForArtist("Andrew Bird", mArtistImageURL);
}
} else
mArtistImageURL = getUrlForArtist("Andrew Bird");
О да, я не знаю, как ведет себя AQuery, но в любом случае вам, вероятно, следует кэшировать изображения только в режиме онлайн.