2016-04-19 1 views
0

私は、画像ファイルがあります://...qgKEIJC5EHey5qLUEDPWazJ9QimqkeQK.j​​pgは、それがオプションどのように私は(異なる解像度を含む)ImageLoaderのキャッシュからファイルを1つ削除することができます

new DisplayImageOptions.Builder() 
       .showImageForEmptyUri(R.drawable.ic_empty) 
       .showImageOnFail(R.drawable.ic_empty) 
       .resetViewBeforeLoading(true) 
       .cacheInMemory(true) 
       .cacheOnDisk(false) 
       .imageScaleType(ImageScaleType.EXACTLY) 
       .bitmapConfig(Bitmap.Config.RGB_565) 
       .build() 

が、私はこのファイルを削除してロードされています、およびキャッシュから削除

if (file.exists()) { 
     file.setWritable(true); 
     MemoryCacheUtils.removeFromCache(file.getAbsolutePath(), ImageLoader.getInstance().getMemoryCache()); 
     DiskCacheUtils.removeFromCache(file.getAbsolutePath(), ImageLoader.getInstance().getDiskCache()); 
     boolean deleted = file.delete(); 
     if (!deleted) 
      Log.d("ERROR", ""); 
    } 

画像ローダ依然としてメモリキャッシュからロード

D/ImageLoader: Display image in ImageAware (loaded from MEMORY_CACHE) [file://.../qgKEIJC5EHey5qLUEDPWazJ9QimqkeQK.jpg_430x430] 

それから私は、画像表示サイズ

int size = getImageView().getWidth(); 
      String cachedFile = file.getAbsolutePath() + "_" + size + "x" + size; // = file://.../qgKEIJC5EHey5qLUEDPWazJ9QimqkeQK.jpg_430x430 
      MemoryCacheUtils.removeFromCache(cachedFile, ImageLoader.getInstance().getMemoryCache()); 

を使用して、このようなファイルを削除しようとしたが、それはどのように私はキャッシュからそのようなすべてのファイルを削除することができ

を働いていませんか?

+0

いいます)は、(imageLoader.clearDiscCacheを試してみました;? – uguboz

+0

ショーを交換した後、私は(彼らは非常に大きな可能性)キャッシュ内の他の画像を保存する必要がある、と私はキャッシュにその小さな解像度を持っている必要がありますが、私は一つの画像を削除し、同じ名前で別のと交換する必要がありますが、画像ローダーメモリキャッシュからの古いイメージ –

答えて

0

は最終的に私は解決策が見つかりました:私は、ローカルファイルの誤ったURLを使用していた を、私は私の画像のURLをfile.getAbsolutePath()として保存されたとfile://含めていなかった原因と、コードでfile://を追加するのを忘れ。また、私は、アダプタに

(レイヤカバー元の画像をトリミングするときの状況で、その後、それが消えると、既にトリミングされた画像を表示する必要がある)私はスムーズにトリミングされて元の画像を置き換えることができますどのように活動

public void setImageLoader(final ImageView imageView, final MyImage myImage) { 
     final String path = "file://" + myImage.getAbsPathImage(); 
     final DisplayImageOptions options = new DisplayImageOptions.Builder() 
       .showImageForEmptyUri(R.drawable.ic_empty) 
       .showImageOnFail(R.drawable.ic_empty) 
       .resetViewBeforeLoading(false) //important! 
       .cacheInMemory(true) //important! 
       .cacheOnDisk(true) //important! 
       .imageScaleType(ImageScaleType.EXACTLY) 
       .bitmapConfig(Bitmap.Config.RGB_565) 
       .build(); 
     if (!myImage.isImageCropCacheUpdated()) { 
      List<String> memCache = MemoryCacheUtils.findCacheKeysForImageUri(path, ImageLoader.getInstance().getMemoryCache()); 
      boolean cacheFound = !memCache.isEmpty(); 
      if (!cacheFound) { 
       File discCache = DiskCacheUtils.findInCache(path, ImageLoader.getInstance().getDiskCache()); 
       if (discCache != null) { 
        cacheFound = discCache.exists(); 
       } 
      } 
      if (cacheFound) { 
       myImage.setIsImageCropCacheUpdated(true); 
       MemoryCacheUtils.removeFromCache(path, ImageLoader.getInstance().getMemoryCache()); 
       DiskCacheUtils.removeFromCache(path, ImageLoader.getInstance().getDiskCache()); 
      } 
     } 

     ImageLoader.getInstance().displayImage(path, imageView, options); 
} 

を見つけました

final ImageView imageView = (ImageView) pager.findViewWithTag(Constants.TAGS.IMAGEVIEW_TAG 
         + pager.getCurrentItem()); //get image view from view pager 
       imageView.setImageBitmap(getCropImageView().getCroppedImage()); 
       imagePagerAdapter.setImageLoader(imageView, getCurrentImage()); //get cropped image from special crop image view and call setImageLoader from adapter 

私はその後も、私はにトリミングされた画像を設定しています、私は特別なクロップ画像ビューのアニメーションをフェードアウト呼び出すと、それは偉大に見える、(なぜ知らない)その場合の画像が点滅するのでnotifyDataSetChanged()を使用していませんよ画像ローダーの前に画像を読み込むことができますし、アニメーションをフェードアウトさせるのに一定の時間がかかりますが、もしそれができないのであれば - おそらく少し時間がかかっていて、まだトリミングされていない画像が残っています。

関連する問題