Para la versión más actualizada 2.71828 Éstas son su respuesta.
P1 : ¿No tiene caché de disco local?
R1 : Hay almacenamiento en caché predeterminado dentro de Picasso y el flujo de solicitud es como este
App -> Memory -> Disk -> Server
Donde sea que encuentren su imagen primero, usarán esa imagen y luego detendrán el flujo de solicitudes. ¿Qué pasa con el flujo de respuesta? No se preocupe, aquí está.
Server -> Disk -> Memory -> App
De forma predeterminada, se almacenarán primero en un disco local para la caché de mantenimiento extendida. Luego, la memoria, para el uso de instancia de la caché.
Puede usar el indicador incorporado en Picasso para ver dónde se forman las imágenes habilitando esto.
Picasso.get().setIndicatorEnabled(true);
Aparecerá una bandera en la esquina superior izquierda de sus imágenes.
- La bandera roja significa que las imágenes provienen del servidor. (Sin almacenamiento en caché en la primera carga)
- Bandera azul significa que las fotos provienen del disco local. (Almacenamiento en caché)
- Bandera verde significa que las imágenes provienen de la memoria. (Almacenamiento en caché de instancias)
P2 : ¿Cómo habilito el almacenamiento en caché de disco si usaré la misma imagen varias veces?
A2 : No es necesario que lo habilite. Es el predeterminado.
Lo que tendrá que hacer es DESACTIVARLO cuando desee que sus imágenes estén siempre frescas. Hay 2 vías de almacenamiento en caché deshabilitado.
- Establecer
.memoryPolicy()
a no_cache y / o NO_STORE y el flujo se verá así.
NO_CACHE omitirá la búsqueda de imágenes de la memoria.
App -> Disk -> Server
NO_STORE omitirá almacenar imágenes en la memoria cuando las imágenes se carguen por primera vez.
Server -> Disk -> App
- Establecer
.networkPolicy()
a no_cache y / o NO_STORE y el flujo se verá así.
NO_CACHE omitirá la búsqueda de imágenes del disco.
App -> Memory -> Server
NO_STORE omitirá almacenar imágenes en el disco cuando la primera carga de imágenes.
Server -> Memory -> App
No puede DESACTIVAR ninguno de los dos para las imágenes sin almacenamiento en caché. Aquí hay un ejemplo.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
El flujo sin almacenamiento en caché completo y sin almacenamiento se verá así.
App -> Server //Request
Server -> App //Response
Por lo tanto, es posible que también lo necesite para minimizar el uso de almacenamiento de su aplicación.
P3 : ¿Necesito agregar algún permiso de disco al archivo de manifiesto de Android?
A3 : No, pero no olvide agregar el permiso de INTERNET para su solicitud HTTP.