我正在从服务器下载图像ListView
并将其存储到 SD 卡中。
并且当下次列表视图出现时,我仅使用异步方法从 SD 卡访问它,我使用此方法,以便用户不需要访问服务器。
但是,当所有图像都从 SD 卡加载到 listview 中时,如果我滚动它的速度非常快,那么每次它尝试仅从 SD 卡访问它而不是从缓存中访问我猜。
从服务器下载图像时我也遇到了同样的问题,这就是为什么我想将它存储到 SD 卡中。但我面临同样的问题。
这是我的代码ListImageDownloader。在那里有一个函数被调用downloadBitmap(String)
,我创建了另一个名为的函数downloadSDBitmap(String)
,其代码如下
Bitmap downloadSDBitmap(String urlId) {
Bitmap bitmap = null;
File file = new File(
fileLoc +"/"+ urlId+".png");
if(file.exists()){
Log.d("PATH" , file.getAbsolutePath());
bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
}
return bitmap;
}
除此之外,整个缓存代码都是一样的。所以任何人都可以帮助我如何改进它,Gtalk
当我快速滚动时它只加载一次图像,如果我快速滚动图像保持原样并且不从网络获取
更新
这些是我的参数
final static int MAX_ENTRIES = 150;
private static final int HARD_CACHE_CAPACITY =50;
private static final int DELAY_BEFORE_PURGE = 10 * 1000; // in milliseconds