[英]How to clear Picasso cache memory in android
我有圖像問題,我正在嘗試從列表中的服務器獲取圖像,但是如果我從應用程序更新圖像,它將成功進入服務器,但是當我獲取新數據時,我得到了舊圖像,我已經清除了Picasso
緩存,仍然在這里顯示舊圖像是我的代碼。 是否有其他解決方案可清除Picasso
的緩存
public class WorkerListAdapter extends RecyclerView.Adapter<WorkerListAdapter.MyViewHolder> {
private static final int REQUEST_PHONE_CALL = 1;
private List<ItemWorkerList> itemWorkerListList;
private Context context;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView tv_worker_name, tv_worker_type;
public CircleImageView iv_worker_image;
public ImageView iv_worker_images;
ImageView iv_edit_provider;
public LinearLayout ll_doc;
public ProgressBar pb_worker;
public MyViewHolder(View view) {
super(view);
this.setIsRecyclable(true);
tv_worker_name = (TextView) view.findViewById(R.id.tv_worker_name);
tv_worker_type = (TextView) view.findViewById(R.id.tv_worker_type);
iv_edit_provider = (ImageView) view.findViewById(R.id.iv_edit_provider);
iv_worker_image = (CircleImageView) view.findViewById(R.id.iv_worker_image);
iv_edit_provider = (ImageView) view.findViewById(R.id.iv_edit_provider);
pb_worker = (ProgressBar) view.findViewById(R.id.pb_worker);
}
}
public WorkerListAdapter(Context context, ArrayList<ItemWorkerList> itemWorkerListList) {
this.context = context;
this.itemWorkerListList = itemWorkerListList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_worker_list, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
final ItemWorkerList itemWorkerList = itemWorkerListList.get(position);
holder.tv_worker_name.setText(itemWorkerList.getName());
holder.tv_worker_type.setText(itemWorkerList.getCategory());
Picasso.get().invalidate(itemWorkerList.getImage());
Picasso.get().invalidate(itemWorkerList.getDocument());
if (!TextUtils.isEmpty(itemWorkerList.getImage())) {
Picasso.get().load(itemWorkerList.getImage()).memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).into(holder.iv_worker_image, new Callback() {
@Override
public void onSuccess() {
holder.pb_worker.setVisibility(View.GONE);
}
@Override
public void onError(Exception e) {
holder.pb_worker.setVisibility(View.GONE);
Picasso.get().load(R.drawable.dummy).into(holder.iv_worker_image);
}
});
}
你可以這樣做 -
Picasso.with(context).load(your_url).networkPolicy(NetworkPolicy.NO_CACHE)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.into(your_image_view);
public class Clear {
public static void clearCache (Picasso p) {
p.cache.clear();
}}
這樣使用。
Clear.clearCache(Picasso.with(context));
Clear類必須在包中:
因為無法從該程序包外部訪問緩存。 像這個答案一樣: https : //stackoverflow.com/a/23544650/4585226
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.