2016-11-11 9 views
1

私はAmazon S3から画像を読み込むAndroidアプリで作業しています。 イメージのURLは、トークンと有効期限のキーによってランダムに変更されます。その理由のために、私はイメージグライドをキャッシュすることができません。idがURLでないグライドイメージキャッシュ

グライドキャッシュキーは、URLではなく静的ID(イメージIDなど)として設定できます。

私はAWS

Glide.with(remoteGalleryAct).load(photoFinalImageURL) 
       .signature(new StringSignature(getImageUrl(photoFinalImageURL)))// remove AWS keys 
       .error(defaultNoImageDrawable) 
       .placeholder(defaultNoImageDrawable) 
       .dontAnimate() 
       .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
       .into(new ImageViewTarget<GlideDrawable>(photoHolder.photo) { 
        @Override 
        protected void setResource(GlideDrawable resource) { 
        } 

        @Override 
        public void onResourceReady(final GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { 
         //super.onResourceReady(resource, glideAnimation); 
         view.setImageDrawable(resource); 
        } 
       }); 

から画像をロードするために私のコードスニペットを添付グライドに達成するためのいずれかの方法がある私を提案してください。

+0

私は画像をロードするために自分のコードを添付後半はこちら申し訳 –

+0

をあなたのコードをアップロードしてください:

//Create a custom class and override the method to remove authentication header from the S3 image url public class GlideUrlCustomCacheKey extends GlideUrl { public GlideUrlCustomCacheKey(String url) { super(url); } public GlideUrlCustomCacheKey(String url, Headers headers) { super(url, headers); } public GlideUrlCustomCacheKey(URL url) { super(url); } public GlideUrlCustomCacheKey(URL url, Headers headers) { super(url, headers); } @Override public String getCacheKey() { String url = toStringUrl(); if (url.contains("?")) { return url.substring(0, url.lastIndexOf("?")); } else { return url; } } } 

は、このクラスから取得したURLとImageViewのを設定します。 AWS S3から – user968571

答えて

1

GlideUrlクラスのgetCacheKey()メソッドをオーバーライドします。このメソッドは、イメージをキャッシュするためのキーを設定します。

は、ここでそれを行う方法は次のとおりです。

Glide.with(context).load(new GlideUrlCustomCacheKey(buzzUrl)).into(imageView);