私はAQueryを使用していくつかの画像をキャッシュしています。私は画像が正しくキャッシュされているという事実を知っていますが、私がオンラインになっていなければアクセスできません。オフラインでキャッシュされた画像に正しくアクセスできません。
SDカードで見ることができるためキャッシュされていることがわかっています。返信文のmArtistImageURL
をブラウザ(コピー/ペースト)のURLに置き換えると、すでにキャッシュされている場合私がオンラインの場合にのみイメージURLを取得するよう要求していますが、キャッシュされたイメージがオフラインで読み込まれない理由はわかりません。
MusicUtils.isOnline()
は、接続があるかどうかを確認するためのチェックです。私が大量に私のdoInBackground()
メソッドをラップしている主な理由は、私がしなければスローされる例外です。 FATAL EXCEPTION: AsyncTask #1
はすべてLogcatが私のために現時点で出しているものです。スタックトレースがなぜ完全ではないのか分かりません。
私が知っているあらゆる方法で私の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);
}
}
ええ、私はこれを実現します、あなたは正しいです。物事は、私はこれについて他に行くべきかどうか分からない。私はオフライン中にURLの値を維持する方法は考えられません。私は 'SharedPreferences'を試しましたが、彼らは決して働きませんでした。オフラインのときにイメージURLを取得するために使用しているメソッドによってスローされた例外をキャッチする必要があります。そうしないと、強制的に閉じます。アドバイスはありますか? – adneal
アーティストごとに1つの画像が好きですか? – Sver
私はあなたが言っていることを理解していますが、最初に取得するためにオンラインにする必要がある場合、 'getImageUrlOrFilenameWhileOffline()'メソッドは正しい画像URLを返すことができますか? – adneal