我正在使用Picasso进行图像加载,我将它与NetworkPolicy.OFFLINE
一起使用,
但在某些时候我想从互联网更新图像,我正在尝试
Picasso.with(context).invalidate(url);
Picasso.with(context).load(url).memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).networkPolicy(NetworkPolicy.NO_CACHE);
但是图像仍然从磁盘中获取,只有缓存无效。
答案 0 :(得分:1)
使用此:
Picasso.with(context).load(url).memoryPolicy(MemoryPolicy.NO_CACHE).into(image);
答案 1 :(得分:0)
您可以使用以下代码以编程方式清除缓存。您可以在需要从API获取图像之前使用此代码。 如果您希望PICASSO永远不会缓存图像,您可以使用waseem共享的代码。但是如果你需要它来缓存,但有时你需要从API获取图像,你可以清除缓存。
public static void trimCache(Context context) {
try {
File dir = context.getCacheDir();
if (dir != null && dir.isDirectory()) {
deleteDir(dir);
}
} catch (Exception e) {
// TODO: handle exception
}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
return dir.delete();
}
else {
return false;
}
答案 2 :(得分:0)
所以当我还没有任何意见时,我就是这么说的。 关键是调用.into()方法来触发覆盖缓存。 所以我只用这个:
Picasso.with(context).load(url).into(new ImageView(context));