J'utilise la bibliothèque Volley dans mon projet mais j'ai un problème avec OutOfMemory Exception. Dans mon application, je télécharge des pouces et des images en taille réelle à partir du serveur via NetworkImageView en utilisant la méthode setImageUrl
. J'utilise BitmapLruCache:Comment faire face à l'exception OutOfMemory
public class BitmapLruCache extends LruCache<String, Bitmap> implements ImageLoader.ImageCache {
public static int getDefaultLruCacheSize() {
final int maxMemory = (int) (Runtime.getRuntime().maxMemory()/1024);
final int cacheSize = maxMemory/8;
return cacheSize;
}
public BitmapLruCache() {
this(getDefaultLruCacheSize());
}
public BitmapLruCache(int sizeInKiloBytes) {
super(sizeInKiloBytes);
}
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight()/1024;
}
@Override
public Bitmap getBitmap(String url) {
return get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
put(url, bitmap);
}
}
Je reçois OutOfMemoryException
sur HTC Desire (Android 2.2.2). Comment puis-je gérer cette exception? Quelque chose ne va pas?
Modifier
Cette exception, je suis arrivé au cours du test de singe:
java.lang.OutOfMemoryError à com.android.volley.toolbox.ByteArrayPool.getBuf (ByteArrayPool.java:101) à com.android.volley.toolbox.PoolingByteArrayOutputStream.expand (PoolingByteArrayOutputStream.java:76) à com.android.volley.toolbox.PoolingByteArrayOutputStream.write (PoolingByteArrayOutputStream.java:84) à com.android.volley.toolbox.BasicNetwork.entityToBytes (BasicNetwork.java:213) à com.android.volley.toolbox.BasicNetwork.performRequest (BasicNetwork.java:104) à com.android.volley .NetworkDispatcher.run (NetworkDispatcher.java:105)
@Sipka - il ne résout pas mon problème
@Muhammad Babar - bibliothèque Volley gère tous les réseaux/opérations bitmap/cache donc j'ai besoin solution corrige l'exception OutOfMemory provoquée par Volley.
dans le – Sipka
manifeste essayer largeHeap = « true » cela pourrait être dû à la taille de bitmaps, s'il vous plaît se référer ce * http: //developer.android.com/training/displaying-bitmaps/load-bitmap.html* pour plus de détails –
@Sipka - édité ma question. – Ziem