对于最新版本2.71828,这是您的答案。
Q1:它没有本地磁盘缓存吗?
A1:毕加索内有默认缓存,请求流就是这样
App -> Memory -> Disk -> Server
无论他们在哪里遇到图像,都将使用该图像,然后停止请求流。响应流程如何?别担心,这里。
Server -> Disk -> Memory -> App
默认情况下,它们将首先存储到本地磁盘中以用于扩展保留缓存。然后是内存,以供实例使用缓存。
您可以通过启用此功能,在Picasso中使用内置指示器来查看图像的形成位置。
Picasso.get().setIndicatorEnabled(true);
它将在图片的左上角显示一个标志。
- 红色标志表示图像来自服务器。(第一次加载时不缓存)
- 蓝色标志意味着该照片来自本地磁盘。(正在缓存)
- 绿色标记表示图像来自内存。(实例缓存)
问题2:如何启用磁盘缓存,因为我将多次使用同一映像?
A2:您不必启用它。这是默认值。
什么你需要做的是DISABLE,当你想你的形象永远是新鲜的吧。有2种禁用缓存的方式。
- 设置
.memoryPolicy()
为NO_CACHE和/或NO_STORE,流将如下所示。
NO_CACHE将跳过从内存中查找图像。
App -> Disk -> Server
第一次加载图像时,NO_STORE将跳过将图像存储在内存中。
Server -> Disk -> App
- 设置
.networkPolicy()
为NO_CACHE和/或NO_STORE,流将如下所示。
NO_CACHE将跳过从磁盘查找图像。
App -> Memory -> Server
首次加载图像时,NO_STORE将跳过磁盘中的存储图像。
Server -> Memory -> App
您不能全部禁用缓存图像,而不能全部禁用。这是一个例子。
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
完全没有缓存和没有存储的流程将如下所示。
App -> Server //Request
Server -> App //Response
因此,您可能还需要这样做以最大程度地减少应用程序的存储使用量。
Q3:我需要添加一些磁盘权限到android清单文件吗?
A3:否,但是不要忘记为HTTP请求添加INTERNET权限。