2016-11-11 3 views
1

Ich arbeite in Android App, die Bilder von Amazon S3 laden. Die Image-URL ändert sich nach dem Zufallsprinzip mit Token und Ablaufdatum. Aus diesem Grund kann ich das Bild Glide nicht zwischenspeichern.Glide Image Cache mit ID nicht URL

Es gibt eine Möglichkeit, Glide-Cache-Schlüssel als statische ID (wie Bild-ID) nicht als URL festzulegen.

angebracht ich meinen Code-Schnipsel

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); 
        } 
       }); 

Bitte empfehlen Sie mir Bild von AWS zu laden gibt es eine Möglichkeit, in Glide zu erreichen.

+0

Bitte hier Ihren Code eingeben –

+0

für Leider laden spät i angebracht meinen Code Bild zu laden von AWS S3 – user968571

Antwort

1

Überschreiben Sie die Methode getCacheKey() der Klasse GlideUrl. Diese Methode legt den Schlüssel für das Zwischenspeichern des Bilds fest.

Hier ist, wie es zu tun:

//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; 
     } 
    } 
} 

die Imageview mit der URL aus dieser Klasse erhielt Set:

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