我在我的项目中使用Volley库,但我遇到OutOfMemory异常问题。在我的应用程序中,我使用setImageUrl
方法通过NetworkImageView从服务器下载大拇指和全尺寸图像。我使用BitmapLruCache:如何处理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);
}
}
我越来越对的HTC Desire OutOfMemoryException
(安卓2.2.2)。我该如何处理这个异常?我在做什么错了?
编辑
这个例外,我猴子试验中得到:
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 - 它并没有解决我的问题
@Muhammad巴巴尔 - 排球库处理所有网络/位图/缓存操作,所以我需要的解决方案修复由Volley造成的OutOfMemory异常。
在清单 – Sipka
尝试largeHeap =“真”,这可能是由于位图的大小,请参考这* * http://developer.android.com/training/displaying-bitmaps/load-bitmap.html*更多详细信息 –
@Sipka - 编辑我的问题。 – Ziem