我在使用新的Volley库实现Image缓存时遇到了麻烦.在演示文稿中,代码看起来像这样
mRequestQueue = Volley.newRequestQueue(context);
mImageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache());
Run Code Online (Sandbox Code Playgroud)
BitmapLruCache显然不包含在工具包中.知道如何实现它或指向一些资源?
http://www.youtube.com/watch?v=yhv8l9F44qo @ 14:38
谢谢!
我有一个相当内存密集的进程,可能导致堆大小增长接近其限制(在这种情况下为24).
但是,当该过程结束时,分配的内存(在DDMS堆工具和堆转储中列出)远远低于6或7.
尽管分配的内存很低,而且有大量的可用内存,但堆似乎没有回来.
因此即使它说有足够的可用内存,我仍然可以在这种情况下出现内存错误.
所以它引出了几个问题:
即使DDMS的Heap选项卡中的Allocated内存和堆转储本身只显示分配的7mb内存,还有未提及的未被垃圾收集的隐藏内存?如果是这样,我该如何追踪?
似乎内存不足错误是基于堆大小,而不是分配内存大小.那么,当内存密集型进程结束时,如果不需要那么高,有没有办法强制堆大小恢复?
感谢您的见解.
我在我的项目中使用Volley库但是我遇到了OutOfMemory异常的问题.在我的应用程序中,我通过NetworkImageView使用setImageUrl方法从服务器下载拇指和全尺寸图像.我正在使用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); …Run Code Online (Sandbox Code Playgroud)