私はアンドロイドの開発者のサイトを参照して、シングルトンのクラスでVolley NetworkImageViewを作成しました。しかし、そのアプリケーションの強制終了後にキャッシュイメージを維持していないとオフラインで再び私のアプリを開きます。オフラインモードでキャッシュからイメージを取得するネットワークイメージビューを作成する方法。私はLruCacheを使用しています。オフラインモードで画像を表示するにはnetworkimageview?アプリケーションを終了してから再開しました。 Facebookのアプリのように
注:私は、アプリケーション全体でNetworkImageViewを使用しています。そして、私はどこかで、ディスクキャッシュは、イメージURLがキャッシュヘッダーである場合にのみ格納されると読んでいます。私はそのことを知りたいし、そのURLのヘッダーがない場合、どのようにイメージのディスクキャッシュを格納するようにバレーを強制するのでしょうか?
マイコード:
public class VolleySingletonPattern {
private static VolleySingletonPattern mInstance;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private static Context mCtx;
private VolleySingletonPattern(Context context) {
mCtx = context;
mRequestQueue = getRequestQueue();
mImageLoader = new ImageLoader(mRequestQueue, new LruBitmapCache(
LruBitmapCache.getCacheSize(mCtx)));
}
public static synchronized VolleySingletonPattern getInstance(Context context) {
if (mInstance == null) {
mInstance = new VolleySingletonPattern(context);
}
return mInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
// getApplicationContext() is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}
public ImageLoader getImageLoader() {
return mImageLoader;
}}
マイLruCache:
public class LruBitmapCache extends LruCache<String, Bitmap>
implements ImageCache {
public LruBitmapCache(int maxSize) {
super(maxSize);
}
public LruBitmapCache(Context ctx) {
this(getCacheSize(ctx));
}
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight();
}
@Override
public Bitmap getBitmap(String url) {
return get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
put(url, bitmap);
}
// Returns a cache size equal to approximately three screens worth of images.
public static int getCacheSize(Context ctx) {
final DisplayMetrics displayMetrics = ctx.getResources().
getDisplayMetrics();
final int screenWidth = displayMetrics.widthPixels;
final int screenHeight = displayMetrics.heightPixels;
// 4 bytes per pixel
final int screenBytes = screenWidth * screenHeight * 4;
return screenBytes * 3;
}}
私はNetworkImageViewがしたい(http://stackoverflow.com/questions/26560531/how-to-make-volley-networkimageview-worke-offline)[バレーボールNetworkImageViewのworkeオフラインの作り方] –