【问题标题】:Clear network cache using Picasso使用毕加索清除网络缓存
【发布时间】:2016-12-31 10:50:21
【问题描述】:

我正在使用Picasso 将图像加载到我的ImageView 中,如下所示:

Picasso.with(getContext())
       .load(store.getString("profile"))
       .placeholder(R.drawable.ic_nothumb)
       .resize(120, 120)
       .into(iv);

store.getString("profile") = a 字符串代表我的网址。

但是,即使路径没有改变,当我在同一路径中更新图像时,Picasso 仍然会加载以前的图像。

我读到我们可以清除网络缓存,但我找不到使用方法 .invalidate() 方法或 .cachePolicy().networkPolicy() 当我尝试使用它们时,我有未解析的符号。

编辑:我更新了我的Picasso 版本以编译

"com.squareup.picasso:picasso:2.5.2"

现在我可以使用.networkPolicy(),但是我遇到了这个错误,我找不到任何解决方案来解决它:

E/AndroidRuntime: 致命异常: main 进程:dev.com.diaginfo,PID:10614 java.lang.NoClassDefFoundError:解析失败:Lcom/squareup/picasso/NetworkPolicy; 原因:java.lang.ClassNotFoundException:在路径:DexPathList 上找不到类“com.squareup.picasso.NetworkPolicy”

【问题讨论】:

  • "我读到我们可以清除网络缓存,但是当我尝试使用它们时我找不到使用 .invalidate() 方法或 .cachePolicy() 或 .networkPolicy() 的方法有未解析的符号。”
  • 您遇到的新错误可能是由于超出了 dex 限制。但是,这是一个完全不同的情况,应该在一个新问题中发布。

标签: android caching picasso


【解决方案1】:

你必须明确告诉毕加索不要缓存图片:

Picasso.with(getContext())
    .load(store.getString("profile"))
    .placeholder(R.drawable.ic_nothumb)
    .resize(120, 120)
    .networkPolicy(NetworkPolicy.NO_CACHE)
    .into(iv);

【讨论】:

  • ".cachePolicy() 或 .networkPolicy() 当我尝试使用它们时,我有未解析的符号。"
  • 您在哪一步尝试使用它们?如果在into() 之前调用它们应该可以工作。
  • 在网络策略“P”中 p 大写。使用这个 Picasso.with(getContext()) .load(store.getString("profile")) .placeholder(R.drawable.ic_nothumb) .resize(120, 120) .networkPolicy(NetworkPolicy.NO_CACHE) .into(iv) ;
  • 我的错,使用了错误的毕加索版本,我改为编译“com.squareup.picasso:picasso:2.5.2”但有一个错误我无法修复,请参阅编辑问题
  • 我的错,“p”确实是一个错字。
【解决方案2】:

Picaso 使用你的 url 作为缓存的关键。更新图像时,使用时间戳来解决这个问题。我用过,效果很好

【讨论】:

    猜你喜欢
    • 2016-08-10
    • 2014-04-10
    • 2015-02-14
    • 2015-05-07
    • 2014-11-03
    • 2016-03-17
    • 2019-05-26
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多