2016-11-07 3 views
5

Ich verwende Picasso, um Bild in meiner Anwendung zu laden, aber ich vor einem Problem, dass mein Bild URL ist gleich, aber Bild ändert sich von backend Aufruf der gleichen URL aber Picasso Laden des gleichen Bildes in seinem Cache gespeichert. Jetzt möchte ich den Cache für dieses Bild löschen und das Bild erneut laden.Wie Cache löschen und Bild in Picasso neu laden?

Was ich habe, habe ich versucht, auf SO gesucht feststellen, dass wir picasso.invalidate(fileName); oder memoryPolicy(MemoryPolicy.NO_CACHE) verwenden können, aber ich bin die Fehlermeldung im Code bekommen

Kann nicht reslove Methode ungültig

kann nicht reslove Methode memoryPolicy

Abhängigkeit für picasso in Gradle:

01.235.
+1

was ist '2.5.2' –

+1

@IntelliJAmiya Danke von der Aktualisierung der Version Fehler ist weg –

+0

Weiter voran. Glückliche Codierung –

Antwort

6

invalidate() und memoryPolicy() zu vernetzen wurden in späteren Versionen der Bibliothek eingeführt. Um eine von ihnen zu verwenden aktualisieren picasso auf die neueste Version

compile 'com.squareup.picasso:picasso:2.5.2' 
+1

Dank der Aktualisierung Picasso Version Fehler ist weg –

13

Versuchen Sie, dies zu verwenden.

Picasso.with(context).invalidate(url); 
Picasso.with(context).load(url).networkPolicy(NetworkPolicy.NO_CACHE).memoryPolicy(MemoryPolicy.NO_CACHE); 

compile 'com.squareup.picasso:picasso:2.5.2'

0

Verwendung okhttp Client für picasso wie unter

okHttpClient = new OkHttpClient(); 
picasso = new Picasso.Builder(this) 
      .downloader(new OkHttpDownloader(okHttpClient)) 
      .build(); 

und wenn es nicht der Kontrolle gesetzt okhttp Client-Cache funktioniert

setCacheControl(CacheControl.FORCE_NETWORK); 
0

Picasso sowohl Download und Fehler unterstützt Platzhalter als optionale Funktionen und neuesten Version in gradle. prüft URL in Ihrem Code beim Aufruf jedes Mal

Picasso.with(context) 
    .load(url) 
    .placeholder(R.drawable.user_placeholder) 
    .error(R.drawable.user_placeholder_error) 
    .into(imageView); 
0

append am Ende der URL + System.currentTimeMillis() "=?";