ho fatto riferimento al sito degli sviluppatori Android e ho creato il volley NetworkImageView con classe singleton. Ma non mantiene l'immagine cache dopo la chiusura forzata dell'app e apre nuovamente la mia app offline. come rendere la vista dell'immagine di rete per ottenere l'immagine dalla cache in modalità offline. Sto usando LruCache.networkimageview per visualizzare l'immagine in modalità offline? dopo aver ucciso l'applicazione e riaperta. Come l'app di Facebook
NOTA: utilizzo NetworkImageView in tutta l'app. E ho letto da qualche parte che la cache del disco verrà memorizzata solo quando l'URL dell'immagine consiste nell'intestazione della cache. Voglio sapere a tale proposito e anche se nessuna intestazione nell'URL come quella poi come forzare la scarica per memorizzare la cache del disco dell'immagine?
Il mio codice:
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;
}}
mio 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;
}}
Eventuali duplicati di [Come fare Volley NetworkImageView worke offline] (http://stackoverflow.com/questions/26560531/how-to-make-volley-networkimageview-worke-offline) –