2014-04-02 6 views
6

Sto usando il seguente metodocome scaricare e caching bitmap utilizzando Picasso biblioteca

Bitmap bitmap = Picasso.with(ListofCardsActivity.this) 
          .load(overLayUrl).get(); 

per il download e ottenere l'immagine dall'URL web.

Questo metodo scarica l'immagine dall'URL ogni volta, anche se è già stata scaricata?

Quello che voglio è che una volta che l'immagine viene scaricata, quindi dalla prossima volta in poi, dovrei ottenere l'immagine dalla cache, non c'è bisogno di scaricare.

Se abbiamo il metodo come sopra requisito. per favore fatemelo sapere

risposta

2

Questo metodo scarica l'immagine dall'url ogni volta, anche se è già stata scaricata?

Non se è memorizzato nella cache.

Il Picasso instance you get back with with() è preconfigurato per avere una memoria cache e una cache del disco.

A seconda di quanto si sta scaricando, è possibile che si esaurisca lo spazio nella cache. E spero che Picasso usi cose come ETag e If-Modified-Since per riscaricare l'immagine se l'immagine è cambiata sul server, anche se non ho esaminato il loro codice per vedere se lo fanno, in quanto tale comportamento non è documentato.

+0

Grazie .. di vedere il loro codice e un commento per quel metodo credo che essi non sono chaching, e che stanno scaricando ogni volta. e la mia app richiede anche del tempo per ogni visualizzazione del tempo. potete per favore fornirmi il link di qualsiasi libreria che supporti per lo stesso requisito ... @CommonsWare – AndroidDev

+0

@AndroidDev: "vedendo il loro codice e commentate per quel metodo credo che non stiano scaldando, e stiano scaricando ogni volta" - sei libero di credere in qualsiasi cosa tu voglia. I JavaDocs affermano di aver abilitato la memorizzazione nella cache e [il codice sorgente della classe 'Picasso'] (https://github.com/square/picasso/blob/master/picasso/src/main/java/com/squareup/ picasso/Picasso.java) mostra dove hanno configurato un 'LruCache' per impostazione predefinita. – CommonsWare

+0

COSÌ significa che non stanno scaricando l'immagine ogni volta giusto? @CommonsWare – AndroidDev

0

Questo metodo scarica l'immagine dall'URL ogni volta, anche se è già stata scaricata? Non se è memorizzato nella cache.

Secondo la documentazione e il codice sorgente, Picasso non memorizza nella cache nulla quando si utilizza il metodo sincrono get().

ecco la mia soluzione loading image in modo sincrono e la memorizzazione nella cache con Picasso:

File fileImage = new File("/path/to/your/image"); 

    final Bitmap[] bmpRes = new Bitmap[1]; 
    final Semaphore semaphore = new Semaphore(0); 
    Picasso.with(this).load(fileImage).priority(Picasso.Priority.HIGH).into(new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
      bmpRes[0] = bitmap; 
      semaphore.release(); 
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 
      semaphore.release(); 
     } 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 

     } 
    }); 
    try { 
     semaphore.acquire(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 

    if(bmpRes[0] != null) { 
     Bitmap bmp = bmpRes[0]; 
     //TODO: Whatever you want with the bitmap 
    } else { 
     //TODO: Failed to load the image 
    } 
Problemi correlati