Wie Picasso tatsächlich die Bilder zwischenspeichert

8

Ich würde gerne wissen, wie genau Picasso Library die Bilder in der Anwendung zwischenspeichert. Ich weiß, dass es HttpHeaders verwendet, um Wetter zu überprüfen, um Bilder vom Netz zu holen.

Aber gibt es einen Zeitrahmen, in dem die Bilder zwischengespeichert werden? Wie zum Invalidieren des Caches nach einem Tag oder etwas?

Das Problem ist, dass mein Projekt eine große Anzahl kleiner Bilder aus dem Netzwerk lädt. Manchmal wurden die neuen Bilder beim nächsten Start reflektiert. Aber manchmal tut es das nicht.

  

Der schlimmste Teil ist, einige Bilder haben die Änderungen während andere reflektiert   sind nicht, obwohl die Änderungen zur gleichen Zeit gemacht werden.
Aber, wenn ich die App deinstalliere, haben alle Bilder   reflektierte die Änderungen (natürlich.)

Es muss etwas über das Caching in Picasso geben.

Und bitte sag mir nicht, OkHttp zu benutzen, um den Cache in Picasso zu kontrollieren.
Mein Projekt verwendet AsyncHttpClient von Apache und es ist zu groß, um es zu aktualisieren.
(natürlich nicht von mir. Ich würde nur einen kleinen Netzwerkhelfer mit UrlConnection erstellen, anstatt den gesamten AsyncHttpClient zu implementieren.)

Wie auch immer, jede Idee oder jeder Zeiger wäre willkommen.
Fazit: Nein OkHttp. Ich möchte nur etwas über den Cache-Steuermechanismus von Picasso erfahren.

Grüße

    
Aung Pyae 25.07.2014, 09:39
quelle

2 Antworten

4

Soweit ich weiß, löscht Picasso den Cache nicht von selbst, daher lösen wir das in unserer App "manuell" aus. Der Code dafür lautet:

%Vor%

Sie können diesen Aufräumarbeiter einmal pro Tag / Woche auslösen, je nachdem, was Sie in Ihrer App benötigen.

    
Ciprian 25.07.2014, 10:14
quelle
14

Picasso hat nur einen Speichercache.

Wenn sich das Bild im Speicher-Cache befindet, verwendet es es. Andernfalls wird das Bild, wenn es von seiner entfernten Quelle (Netzwerk, Inhaltsanbieter, Dateisystem usw.) geladen wird, für zukünftige Suchvorgänge in den Speicher-Cache gestellt.

Der Speicher-Cache ist ein LRU, je mehr ein Bild verwendet wird, desto wahrscheinlicher bleibt es im Cache. Bilder, die nicht häufig angefordert werden, werden im Laufe der Zeit geräumt. Es gibt keine Räumung für die Zeit und der Speichercache berücksichtigt nicht die Cache-Semantik von HTTP-Headern (wenn das Bild vom Netzwerk stammt).

Picasso hat keinen Festplatten-Cache. Es basiert auf dem HTTP-Client (je nachdem, welcher verwendet wird) für 100% dieser Funktionalität. Ein Cache wird sowohl für OkHttp als auch für HttpUrlConnection installiert (falls eines verwendet wird) oder wenn bereits eines verwendet wird.

Wenn Sie einen benutzerdefinierten HTTP-Client verwenden, liegt die Last, den Cache zu aktivieren, bei Ihnen, dem Aufrufer.

    
Jake Wharton 25.07.2014 16:05
quelle

Tags und Links