【发布时间】:2014-01-19 04:54:43
【问题描述】:
在我的主要活动中,我有一个使用 UIL 加载图像的 viewpager。当我登录我的第一个帐户时,它会显示 5 张图像并正确下载它们(在我的缓存文件夹中创建了 5 个文件)。我尝试再次登录,是的,图像是从光盘加载的。
当我登录我的第二个帐户时,它会加载 5 张图片,并且有 4 张与第一个帐户相同的图片,所以我希望它只会在我的缓存文件夹中创建一个文件。但是,UIL 又创建了 5 个文件。
这是登录这两个帐户后缓存目录的内容:
2 copies of 20 KB file
2 copies of 76 KB file
2 copies of 204 KB file
2 copies of 84 KB file
1 copy of 34 KB file
1 copy of 46 KB file
这是我的图片加载器的配置:
File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "/cache");
ImageLoader imageLoader = ImageLoader.getInstance();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
.discCache(new UnlimitedDiscCache(cacheDir))
.denyCacheImageMultipleSizesInMemory()
.writeDebugLogs()
.build();
imageLoader.init(config);
options = new DisplayImageOptions.Builder()
.showImageOnFail(android.R.drawable.ic_delete)
.cacheInMemory(true)
.cacheOnDisc(true)
.displayer(new RoundedBitmapDisplayer(10))
.build();
我如何在 viewpager 的适配器上使用 UIL:
@Override
public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.header_item, container,false);
ImageView img = (ImageView) itemView.findViewById(R.id.imageView);
ProgressBar progressBar = (ProgressBar) itemView.findViewById(R.id.progressBar);
display(img, list.get(position), progressBar); //list contains the urls
((ViewPager) container).addView(itemView);
return itemView;
}
public void display(ImageView img, String url, final ProgressBar spinner) {
imageLoader.displayImage(url, img, App.options, new ImageLoadingListener() {
//progress bar changing visibility
} );
}
【问题讨论】:
标签: android caching universal-image-loader