Für die aktuellste Version 2.71828 Dies sind Ihre Antworten.
Q1 : Hat es keinen lokalen Festplatten-Cache?
A1 : In Picasso gibt es Standard-Caching, und der Anforderungsfluss ist genau so
App -> Memory -> Disk -> Server
Wo immer sie zuerst ihr Bild getroffen haben, verwenden sie dieses Bild und stoppen dann den Anforderungsfluss. Was ist mit dem Antwortfluss? Mach dir keine Sorgen, hier ist es.
Server -> Disk -> Memory -> App
Standardmäßig werden sie zuerst auf einer lokalen Festplatte für den erweiterten Aufbewahrungscache gespeichert. Dann der Speicher für die Instanznutzung des Caches.
Sie können die in Picasso integrierte Anzeige verwenden, um zu sehen, wo sich Bilder bilden, indem Sie diese Option aktivieren.
Picasso.get().setIndicatorEnabled(true);
In der oberen linken Ecke Ihrer Bilder wird eine Flagge angezeigt.
- Rote Flagge bedeutet, dass die Bilder vom Server stammen. (Kein Caching beim ersten Laden)
- Blaue Flagge bedeutet, dass die Fotos von der lokalen Festplatte stammen. (Caching)
- Grüne Flagge bedeutet, dass die Bilder aus dem Speicher stammen. (Instanz-Caching)
F2 : Wie aktiviere ich das Festplatten-Caching, da ich dasselbe Image mehrmals verwenden werde?
A2 : Sie müssen es nicht aktivieren. Es ist die Standardeinstellung.
Sie müssen es deaktivieren , wenn Ihre Bilder immer frisch sein sollen. Es gibt zwei Möglichkeiten zum Deaktivieren des Caching.
- Setzen Sie
.memoryPolicy()
auf no_cache und / oder NO_STORE und der Fluss wird so aussehen.
NO_CACHE überspringt das Nachschlagen von Bildern aus dem Speicher.
App -> Disk -> Server
NO_STORE überspringt beim ersten Laden von Bildern das Speichern von Bildern im Speicher.
Server -> Disk -> App
- Setzen Sie
.networkPolicy()
auf no_cache und / oder NO_STORE und der Fluss wird so aussehen.
NO_CACHE überspringt das Nachschlagen von Bildern von der Festplatte.
App -> Memory -> Server
NO_STORE überspringt beim ersten Laden von Bildern das Speichern von Bildern auf der Festplatte.
Server -> Memory -> App
Sie können weder deaktivieren, um Bilder vollständig zwischenzuspeichern. Hier ist ein Beispiel.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
Der Fluss ohne Caching und ohne Speicherung wird so aussehen.
App -> Server //Request
Server -> App //Response
Möglicherweise benötigen Sie dies, um auch die Nutzung Ihres App-Speichers zu minimieren.
Q3 : Muss ich der Android-Manifestdatei eine Festplattenberechtigung hinzufügen?
A3 : Nein, aber vergessen Sie nicht, die INTERNET-Berechtigung für Ihre HTTP-Anforderung hinzuzufügen.