1

我实现了一个例程,将数据从 json 保存到数据库中,之后如果用户离线,他可以看到所有数据。但毕加索在第一次运行后不加载图像。但是当我在在线模式下运行该应用程序两次时,毕加索可以在离线模式下从缓存中加载图像。(它应该在第一次运行时缓存图像,但它不起作用)

感谢任何建议

4

2 回答 2

3

https://stackoverflow.com/a/23281195/3664628

毕加索没有磁盘缓存。它委托给您用于该功能的任何 HTTP 客户端(依赖于 HTTP 缓存语义进行缓存控制)。因此,您寻求的行为是免费的……

于 2016-03-02T06:09:03.700 回答
-1

主要原因可能是其他图像由于其大小而将旧图像从缓存中逐出。您可以像这样加载较小的版本或增加内存缓存的大小

Picasso p = new Picasso.Builder(context)
.memoryCache(new LruCache(Size))
.build();

如果您不想保存在缓存中,您还可以使用Memory Policy排除它。

Picasso 首先尝试从内存中获取请求的图像。如果您希望 Picasso 跳过此步骤,您可以致电memoryPolicy(MemoryPolicy policy, MemoryPolicy... additional)您的 Picasso 请求创建者。MemoryPolicy是一个具有两个值的简单枚举:NO_CACHENO_STORE. 像这样

Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[1])
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
.into(imageViewFromDisk);

附加来源:futurestud.io

于 2016-03-02T06:26:12.640 回答