プロジェクトで Volley ライブラリを使用していますが、OutOfMemory Exception に問題があります。私のアプリケーションでは、setImageUrl
メソッドを使用して NetworkImageView 経由でサーバーから親指とフルサイズの画像をダウンロードしています。私は 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);
}
}
OutOfMemoryException
HTC Desire (Android 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 Babar - Volley ライブラリはすべてのネットワーク/ビットマップ/キャッシュ操作を処理するため、Volley によって引き起こされる OutOfMemory 例外を修正するソリューションが必要です。