Pour la version 2.71828 la plus récente, voici votre réponse.
Q1 : N'a-t-il pas de cache disque local?
A1 : Il y a une mise en cache par défaut dans Picasso et le flux de demande comme celui-ci
App -> Memory -> Disk -> Server
Partout où ils ont rencontré leur image en premier, ils utiliseront cette image, puis arrêteront le flux de demandes. Qu'en est-il du flux de réponse? Ne vous inquiétez pas, c'est ici.
Server -> Disk -> Memory -> App
Par défaut, ils seront d'abord stockés sur un disque local pour le cache de conservation étendu. Ensuite, la mémoire, pour l'utilisation de l'instance du cache.
Vous pouvez utiliser l'indicateur intégré dans Picasso pour voir où se forment les images en activant cette option.
Picasso.get().setIndicatorEnabled(true);
Il affichera un drapeau dans le coin supérieur gauche de vos photos.
- Le drapeau rouge signifie que les images proviennent du serveur. (Pas de mise en cache au premier chargement)
- Le drapeau bleu signifie que les photos proviennent du disque local. (Mise en cache)
- Le drapeau vert signifie que les images proviennent de la mémoire. (Mise en cache d'instance)
Q2 : Comment activer la mise en cache du disque car j'utiliserai la même image plusieurs fois?
A2 : Vous n'êtes pas obligé de l'activer. C'est la valeur par défaut.
Ce que vous devrez faire est de le désactiver lorsque vous voulez que vos images soient toujours fraîches. Il existe deux méthodes de mise en cache désactivée.
- Réglez
.memoryPolicy()
sur NO_CACHE et / ou NO_STORE et le flux ressemblera à ceci.
NO_CACHE sautera la recherche d'images de la mémoire.
App -> Disk -> Server
NO_STORE ignorera le stockage des images en mémoire lors du premier chargement d'images.
Server -> Disk -> App
- Réglez
.networkPolicy()
sur NO_CACHE et / ou NO_STORE et le flux ressemblera à ceci.
NO_CACHE sautera la recherche d'images à partir du disque.
App -> Memory -> Server
NO_STORE ignorera le stockage des images sur le disque lors du premier chargement d'images.
Server -> Memory -> App
Vous ne pouvez désactiver ni l'un ni l'autre pour aucune mise en cache des images. Voici un exemple.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
Le flux sans mise en cache ni stockage ressemblera à ceci.
App -> Server //Request
Server -> App //Response
Vous en aurez peut-être besoin pour réduire également l'utilisation du stockage de votre application.
Q3 : Dois-je ajouter une autorisation de disque au fichier manifeste Android?
A3 : Non, mais n'oubliez pas d'ajouter l'autorisation INTERNET pour votre requête HTTP.