Cómo lidiar con la excepción OutOfMemory
Estoy usando la biblioteca Volley en mi proyecto pero tengo un problema con la excepción OutOfMemory. En mi aplicación, estoy descargando pulgares e imágenes a tamaño completo desde el servidor a través de NetworkImageView usandosetImageUrl
método. Estoy usando BitmapLruCache:
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);
}
}
Me estoy poniendoOutOfMemoryException
en HTC Desire (Android 2.2.2). ¿Cómo puedo lidiar con esta excepción? ¿Está algo mal que estoy haciendo?
Editar
Esta excepción la obtuve durante la prueba de monos:
java.lang.OutOfMemoryError at com.android.volley.toolbox.ByteArrayPool.getBuf (ByteArrayPool.java:101) en com.android.volley.toolbox.ut.P.P. toolbox.PoolingByteArrayOutputStream.write (PoolingByteArrayOutputStream.java:84) en com.android.volley.toolbox.BasicNetwork.entityToBytesNassicNP.P.P.P.P.P.P. en com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:105)
@Sipka - no resuelve mi problema
@Muhammad Babar - La biblioteca de Volley maneja todas las operaciones de red / mapa de bits / caché, así que necesito una solución para arreglar la excepción de OutOfMemory causada por Volley.