最新版本2.71828
这是你的答案。
Q1: 它没有本地磁盘缓存吗?
A1: Picasso内置了默认缓存和请求流程就像这样。
App -> Memory -> Disk -> Server
无论他们在哪里首次遇到他们的形象,他们都会使用那个形象,然后停止请求流程。
那么响应流程呢?别担心,这就是它。
Server -> Disk -> Memory -> App
默认情况下,它们将首先存储到本地磁盘中,以便进行扩展的缓存保留。然后,内存用于缓存的实例使用。
您可以使用Picasso中的内置指示器来查看启用此功能的图像来源。
Picasso.get().setIndicatorsEnabled(true);
它会在您的图片的左上角显示一个旗帜。
- 红色旗帜表示图片来自服务器。(首次加载时不缓存)
- 蓝色旗帜表示图片来自本地磁盘。(缓存)
- 绿色旗帜表示图片来自内存。(实例缓存)
Q2:如何启用磁盘缓存,因为我将多次使用相同的图片?
A2:您不需要启用它。这是默认设置。
您需要做的是在您希望图片始终保持新鲜时禁用它。有两种禁用缓存的方法。
- 将
.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
所以,你可能也需要这个来减少你的应用存储使用量。
问题3:我需要在Android清单文件中添加一些磁盘权限吗?
答案3:不需要,但别忘了为你的HTTP请求添加INTERNET权限。