我实现了一个例程,将数据从 json 保存到数据库中,之后如果用户离线,他可以看到所有数据。但毕加索在第一次运行后不加载图像。但是当我在在线模式下运行该应用程序两次时,毕加索可以在离线模式下从缓存中加载图像。(它应该在第一次运行时缓存图像,但它不起作用)
感谢任何建议
我实现了一个例程,将数据从 json 保存到数据库中,之后如果用户离线,他可以看到所有数据。但毕加索在第一次运行后不加载图像。但是当我在在线模式下运行该应用程序两次时,毕加索可以在离线模式下从缓存中加载图像。(它应该在第一次运行时缓存图像,但它不起作用)
感谢任何建议
https://stackoverflow.com/a/23281195/3664628
毕加索没有磁盘缓存。它委托给您用于该功能的任何 HTTP 客户端(依赖于 HTTP 缓存语义进行缓存控制)。因此,您寻求的行为是免费的……
主要原因可能是其他图像由于其大小而将旧图像从缓存中逐出。您可以像这样加载较小的版本或增加内存缓存的大小
Picasso p = new Picasso.Builder(context)
.memoryCache(new LruCache(Size))
.build();
如果您不想保存在缓存中,您还可以使用Memory Policy排除它。
Picasso 首先尝试从内存中获取请求的图像。如果您希望 Picasso 跳过此步骤,您可以致电memoryPolicy(MemoryPolicy policy, MemoryPolicy... additional)
您的 Picasso 请求创建者。MemoryPolicy
是一个具有两个值的简单枚举:NO_CACHE
和NO_STORE
. 像这样
Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[1])
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
.into(imageViewFromDisk);
附加来源:futurestud.io