【问题标题】:Picasso cache exception毕加索缓存异常
【发布时间】:2016-06-20 21:41:44
【问题描述】:

我正在使用 picasso 在 recyclerView 中上传图片

在第一次打开应用程序时,它可以工作并上传图像,但从现在开始,每次我打开应用程序时,加载都会失败,并出现关于缓存的长时间异常:

===============开始毕加索统计 =============== 内存缓存统计 最大缓存大小:9586980 缓存大小:0 缓存百分比已满:0 缓存命中:0 缓存未命中:1 网络统计 下载次数: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) {

}

};

【问题讨论】:

    标签: android caching picasso


    【解决方案1】:

    在函数into(Target target) 中,Picasso 检查当前线程是否是主线程。请看RequestCreate.java中的代码:

    public void into(@NonNull Target target) {
        long started = System.nanoTime();
        checkMain();
    
        ...
    }
    

    【讨论】:

      【解决方案2】:

      https://github.com/square/picasso/issues/305

      上面的链接更深入地讨论了这个问题的潜在解决方案。

      对我有用的是 skipMemoryCache() 现在称为 memoryPolicy(MemoryPolicy.NO_CACHE),因为 skipMemoryCache() 已弃用。

      虽然这成功地减少了我的应用程序的崩溃,但我还是想说重新加载这些图像确实需要时间,因为没有缓存,因此会影响性能。

      【讨论】:

        猜你喜欢
        • 2016-08-10
        • 2014-09-23
        • 2014-04-10
        • 2016-11-18
        • 2018-07-28
        • 2015-08-24
        • 2014-04-10
        • 2015-02-14
        • 2023-04-09
        相关资源
        最近更新 更多