如何在Universal Image Loader中使用Cache?

时间:2013-12-22 07:48:25

标签: android caching android-imageview universal-image-loader

这是一个非常简单的问题,但我无法克服它。

我想要做的是,我有一个ImageView,我想使用UIL在其上设置图像,我能够做得很好。我的另一个需要是:

每次启动活动/片段时,它都会显示与特定URL对应的先前加载的图像,直到它下载新的图像。所以基本上,我想缓存图像,并且每次都显示缓存的图像。

我的初始化代码:

    DisplayImageOptions displayOptions = new DisplayImageOptions.Builder()
            .showStubImage(R.drawable.stubimage)
            .showImageForEmptyUri(R.drawable.imptyURL)
            .showImageOnFail(R.drawable.failed).build();

            ImageLoaderConfiguration configs = new ImageLoaderConfiguration.Builder(getApplicationContext())
            .memoryCacheSize(41943040).defaultDisplayImageOptions(displayOptions)
            .discCacheSize(104857600)
            .threadPoolSize(10).build();

            ImageLoader.getInstance().init(configs);

我做了一些挖掘并找到了一些代码,最终无法正常工作,如下所示: 我的使用代码:

    String URL2="http://asset0.cbsistatic.com/cnwk.1d/i/tim/2012/02/13/Samsung_Galaxy_Note_35117983_28_610x458.jpg";

    ImageLoader loader = ImageLoader.getInstance();
    List<String> memCache = MemoryCacheUtil.findCacheKeysForImageUri(URL2, loader.getMemoryCache());
    boolean cacheFound = !memCache.isEmpty();
    if (!cacheFound) {
        File discCache = DiscCacheUtil.findInCache(URL2, loader.getDiscCache());
        if (discCache != null) {
            cacheFound = discCache.exists();
        }
    }

    Toast.makeText(this, "memCache:"+cacheFound, Toast.LENGTH_LONG).show();

    if(ImageLoader.getInstance().getMemoryCache().get(URL2) != null)
        Toast.makeText(this, "something is there", Toast.LENGTH_LONG).show();
    else
        Toast.makeText(this, "Nothing is there", Toast.LENGTH_LONG).show();

    ImageLoader.getInstance().displayImage(URL2, (ImageView) findViewById(R.id.imageView1));

参考问题:

Universal Image Loader cache

0 个答案:

没有答案