【问题标题】:ImageLoader - Don't download image if it's already being cachedImageLoader - 如果图像已经被缓存,则不要下载图像
【发布时间】:2013-01-21 11:46:21
【问题描述】:

如果图像已经缓存,我不想下载它们。我正在使用 NOSTRA 的 ImageLoader 库。请告诉我是否有任何方法可以做到这一点。以下是代码:-

    DisplayImageOptions options = new DisplayImageOptions.Builder()
                        .showStubImage(R.drawable.ic_stub)
                        .showImageForEmptyUri(R.drawable.ic_sample)
                        .resetViewBeforeLoading()
                        .cacheInMemory()
                        .cacheOnDisc()
                        .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
                        .bitmapConfig(Bitmap.Config.ARGB_8888)
                        .build();
                imageLoader.displayImage(url2.toString()
                                          ,thumbnail,options, new                                 
                    ImageLoadingListener() {
                    @Override
                    public void onLoadingStarted() {

                       // progressBar.setVisibility(grid.VISIBLE);
                        //  grid.notify();
                    }

                    @Override
                    public void onLoadingFailed(FailReason failReason) {

                       //progressBar.setVisibility(grid.GONE);
                        //  grid.notify();

                    }

                    @Override
                    public void onLoadingComplete(Bitmap bitmap) {


                      //  progressBar.setVisibility(grid.GONE);
                        // grid.notify();
                    }

                    @Override
                    public void onLoadingCancelled() {

                       //  progressBar.setVisibility(grid.GONE);
                        //grid.notify();

                    }
                });

【问题讨论】:

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


    【解决方案1】:

    您尚未在 DisplayImageOption 中定义默认缓存选项。

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
        .threadPoolSize(5)
        .threadPriority(Thread.MIN_PRIORITY + 3)
        .denyCacheImageMultipleSizesInMemory()
        // 1MB=1048576 
        .memoryCacheSize(1048576 * 5)
        .discCache(new UnlimitedDiscCache(cacheDir))
        .build();
    

    这里,cacheDir 是一个目录,可能在SD card 上(需要权限“android.permission.WRITE_EXTERNAL_STORAGE”) 或application's cache 目录。

    我在我的申请中提供了cacheDirectory

    File cacheDir = new File(this.getCacheDir(), "name of directory");
        if (!cacheDir.exists())
            cacheDir.mkdir();
    

    现在,在下载任何图像之前,通过以下代码将您的配置提供给ImageLoader

    imageLoader.init(config);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      相关资源
      最近更新 更多