2013-08-28 20 views
5

Sto usando la libreria Picasso per caricare le immagini. In picasso predefinito, utilizza la memoria cache interna per il caricamento delle immagini. Ma come per la mia configurazione dell'app, devo usare la memoria cache esterna (Cache su disco). così ho usato questo codice per la cache su discoCome recuperare le immagini dalla memoria cache in picasso?

   File httpCacheDir = new File(getApplicationContext().getExternalCacheDir(),"http"); 
       long httpCacheSize = 10 * 1024 * 1024; // 10 MiB 
       HttpResponseCache.install(httpCacheDir, httpCacheSize);} 

Picasso è flessibile. Quindi ora memorizza le immagini nella scheda Sd esterna.

Le cache sono archiviate in sdcard/android/data/nomepacchetto/cache/http Le cache sono memorizzate in ".1", ". 0". formati quindi li ho appena aperti e cambia in ".1" in ".jpg". Offre immagini esatte di cui ho bisogno. Ma come fare in modo programmatico? ma Picasso stesso memorizza la mia memoria nella mia app per caricare l'immagine in imageview.ma devo salvarli in sdcard direttamente come immagini/impostare bitmap come sfondo in modalità offline?

+0

se si ha il percorso del file e si è certi che i negozi di file finiscano in .0 o .1 quindi si ottiene il nome del file e si sostituisce lo 0 o 1 con il jpg –

+0

@Usman Kurd Il nome del file assomiglia crittografato in hash Md5 .. sopra 40 parole. – Asthme

+0

@AndroSelva per salvarli in sdcard senza scaricare di nuovo o impostare direttamente come sfondo. – Asthme

risposta

5

È possibile fornire la propria implementazione Cache quando si crea l'istanza Picasso. In questo modo è possibile fornire metodi aggiuntivi che è possibile chiamare per recuperare bitmap direttamente dalla cache di memoria. Utilizzare Picasso.Builder per fornire la propria implementazione per questo. Quando si utilizza with() si utilizza un'istanza interna Singleton statica questo è configurato con la maggior parte dei valori di default (la maggior parte delle applicazioni hanno bisogno i valori di default in ogni caso.)

Tenere un punto di riferimento del vostro Cache implementazione intorno e direttamente interagire con esso. Picasso è pensato per gestire il caricamento/decodifica e la memorizzazione nella cache per te, ma non c'è motivo per cui non puoi costruire intorno ad esso.

Se ci si riferisce alla cache del disco, quindi Picasso non lo supporta al momento. Questo è in base alla progettazione poiché la cache del livello del disco viene eseguita dal livello HTTP e non fa distinzioni a riguardo.

È tuttavia possibile modificare il percorso della cache del disco. Se si utilizza OkHttpDownloader, fornire un file diverso quando si crea il Downloader. Analogamente per UrlConnectionDownloader è possibile estenderlo e sovrascrivere il metodo load().

+0

Hey la mia domanda era sbagliata. Memoria schede/memoria interna non è un problema, non voglio accedere alla cache esternamente/direttamente. Voglio solo per accedere da localmente da picasso.quando l'immagine viene caricata in immagine, voglio solo salvare le immagini nella scheda SD. È possibile? – Asthme

+0

Quindi fammi capire, stai provando a CAMBIARE dove sono archiviati i file, invece di essere interni vuoi che vengano memorizzati nella sdcard?Puoi utilizzare OkHttpDownloader e quando lo crei, passa nella cacheDir che vuoi, oppure se usi UrlConnectionDownloader estendilo e implementa il metodo load() simile a quello della classe base. Sto aggiornando la mia risposta. – dnkoutso

+0

Realizzo un'app gallery online con oltre 1000 foto. Le funzionalità dell'app sono "imposta come sfondo nella schermata iniziale" e "salva su scheda SD". ogni volta che l'immagine viene caricata in imageview, l'utente può istantaneamente "impostarlo come sfondo" o "salva 2 schede SD". Quindi voglio accedere a bitmap dalla memoria cache o da qualsiasi altro metodo.ma creare una nuova memoria cache e recuperare è molto difficile per me. Vorrei accedere al lato interno della Picasso api. Ho provato per una settimana.Pls aiutami. – Asthme

1

Picasso fa gestire la memorizzazione nella cache in esso e scaricano anche è sufficiente inserirlo nel bersaglio visualizzazione immagine simile a Aquery

Secondo The Corner Square Engineering blog maniglia picasso scaricano la cache è di per sé e dare il suo gestore di utenti di utilizzalo e posiziona l'immagine nella vista immagine

+0

U r right.u può utilizzare la cache del disco esterno .picasso è anche flexible.picasso stesso che crea cache in ExtenalsdCard e fornisce il suo handle all'utente da usare e posiziona l'immagine in imageview.but voglio salvarli in asimge di sdcard dalla memoria cache .. – Asthme

+0

hai passato questo http://square.github.io/picasso/? –

+0

ya Ho fatto un sacco di ricerche. Ma non ho trovato la soluzione .. – Asthme

Problemi correlati