【发布时间】:2017-02-20 16:02:28
【问题描述】:
我正在使用 Picasso 下载图像,并有自定义 OKHttp 下载客户端实现,我们在其中创建了大约 153MB 的自定义缓存。我想知道这是否会覆盖毕加索在设备上拥有 15% 的分配 RAM 的默认内存缓存。
【问题讨论】:
我正在使用 Picasso 下载图像,并有自定义 OKHttp 下载客户端实现,我们在其中创建了大约 153MB 的自定义缓存。我想知道这是否会覆盖毕加索在设备上拥有 15% 的分配 RAM 的默认内存缓存。
【问题讨论】:
设置 HTTP 客户端的磁盘缓存不会影响 Picasso 的内存缓存。
OkHttp 中的磁盘缓存缓存从发出 HTTP 请求收到的原始响应。它根据响应中返回的 HTTP 缓存标头执行此操作,并将它们存储在文件系统上的 LRU 中。由于响应存储为不透明字节,因此这些是正在下载的全尺寸图像。
毕加索有一个内存缓存,用于存储解码和转换后的图像。这些是向 HTTP 客户端请求请求并将其返回的字节(从磁盘缓存或网络)解码为 Bitmap 对象的结果。这些对象也存储在 LRU 中,但在内存中。
这两个缓存层根本不相互交互。因此,定义自定义 HTTP 缓存不会以任何方式影响内存缓存,就像更改内存缓存配置不会影响 HTTP 缓存的工作方式一样。
【讨论】: