我使用毕加索在recyclerView中上传图片
在第一次打开应用程序时,它可以正常工作并上传图像,但是从现在开始,每次我打开应用程序时,加载都会失败,缓存方面有一个很长的例外:
===============BEGIN PICASSO Stats ===============内存缓存统计最大缓存大小: 9586980缓存大小:0缓存%满:0 Cache命中:0缓存未命中:1网络统计下载计数:0下载总大小:0平均下载大小:0位图统计总位图解码:0总位图大小:0总转换位图:0总转换位图大小:0总转换位图大小:0平均位图大小:0平均转换位图大小:0 ===============END PICASSO STATS ===============
问题是,我几乎没有开始加载图像,所以缓存已经满了或者出现异常是完全不合理的。
这是我的密码:
Picasso.Listener listener = new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
Log.e(Utils.TAG, "Error loading image: " + exception.getMessage());
exception.printStackTrace();
}
};
Picasso.Builder builder = new Picasso.Builder(context);
builder.listener(listener);
if(!veediChannelArrayList.get(i).isthumbLoaded()) {
builder.build().load(veediChannelArrayList.get(i).getRegularThumbnailURL()).into(target);}
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
veediChannelArrayList.get(i).setBitMap(bitmap);
veediChannelArrayList.get(i).setIsthumbLoaded(true);
channelsViewHolder.thumnailIV.setImageBitmap(veediChannelArrayList.get(i).getBitMap());
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};发布于 2016-08-19 07:57:26
在函数into(Target target)中,Picasso检查当前线程是否为主线程。请参阅RequestCreate.java中的代码:
public void into(@NonNull Target target) {
long started = System.nanoTime();
checkMain();
...
}发布于 2020-10-07 20:04:35
https://github.com/square/picasso/issues/305
上面的链接更深入地讨论了这个问题,一个潜在的解决方案。
对我起作用的是skipMemoryCache(),现在被称为memoryPolicy(MemoryPolicy.NO_CACHE),被称为skipMemoryCache()是不推荐的。
虽然这成功地减少了我的应用程序中的崩溃,但我确实希望告诉大家,重新加载这些图像确实需要时间,当然,因为没有缓存,因此影响了性能。
https://stackoverflow.com/questions/35842058
复制相似问题