我正在使用AQuery來幫助緩存某些圖像。事實上,我知道圖像緩存正確,但我無法訪問它們,除非我在線。我無法在離線時正確訪問緩存圖像
我知道它們正在被緩存,因爲我可以在SD卡上看到它們,如果我將我的返回語句中的mArtistImageURL
替換爲來自瀏覽器的URL(複製/粘貼),圖像將在我離線時加載,如果它已被緩存。我意識到,我只是要求在我上線的情況下才能獲取圖片網址,但即便如此,我也不明白爲什麼緩存的圖片無法加載離線。
MusicUtils.isOnline()
基本上是檢查是否有任何連接。我的大部分方法都包含在我的doInBackground()
方法中,主要原因是如果我不這樣做,拋出異常。目前全部是Logcat正在爲我推出的FATAL EXCEPTION: AsyncTask #1
。我不知道爲什麼堆棧跟蹤不完整。
我試過用我認識的各種方式使用我的AsyncTask
。我已經返回了Bitmap
,File
和String
,並且我可以在每種情況下都成功加載圖像,只要我在線。所以,我有這些緩存的圖像,我需要一些幫助使用它們。
的AsyncTask
public class loadArtistImage extends AsyncTask<String, Integer, Bitmap> {
@Override
protected Bitmap doInBackground(String... arg0) {
// Get artist image
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);
}
}
aq.cache(mArtistImageURL, 60000 * 1440);
return aq.getCachedImage(mArtistImageURL);
}
@Override
protected void onPostExecute(Bitmap result) {
bm = result;
if (bm!= null) {
mArtistImage.postDelayed(new Runnable() {
@Override
public void run() {
mArtistImage.startAnimation(AnimationUtils
.loadAnimation(mContext, android.R.anim.fade_in));
MusicUtils.setArtistBackground(mArtistImage, bm);
}
}, 666);
} else {
// TODO something
}
super.onPostExecute(result);
}
}
是的,我意識到這一點,你說得對。事情是,我不知道如何去做這件事。我無法在離線狀態下想辦法維護網址的價值。我試過'SharedPreferences',但他們從來沒有工作。我必須捕捉我在離線時用於獲取圖像URL的方法所拋出的異常,否則當然會強制關閉。你有什麼建議嗎? – adneal 2012-02-29 05:11:03
你喜歡每個藝術家1個圖像,對吧? – Sver 2012-02-29 05:15:40
我明白你在說什麼,但是如果我需要首先在線抓取它,那麼getImageUrlOrFilenameWhileOffline()是什麼方法可以返回正確的圖像URL? – adneal 2012-02-29 05:18:39