Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Recyclerview的毕加索图像缓存_Java_Android_Image_Caching_Picasso - Fatal编程技术网

Java 使用Recyclerview的毕加索图像缓存

Java 使用Recyclerview的毕加索图像缓存,java,android,image,caching,picasso,Java,Android,Image,Caching,Picasso,我在我的recyclerview适配器中使用毕加索从网络加载图像。我在我的recyclerview中测试了40多个项目,其中29个有图像 我注意到,在到达列表末尾时,当我向上滚动时,一些图像正在从网络而不是缓存中重新加载。有没有办法防止从网络上重新加载映像?或者可能是减少网络带宽使用的替代方案 Picasso.with(context) .load(HOST + post.getImage_url()) .resize(1920,

我在我的recyclerview适配器中使用毕加索从网络加载图像。我在我的recyclerview中测试了40多个项目,其中29个有图像

我注意到,在到达列表末尾时,当我向上滚动时,一些图像正在从网络而不是缓存中重新加载。有没有办法防止从网络上重新加载映像?或者可能是减少网络带宽使用的替代方案

Picasso.with(context)
                .load(HOST + post.getImage_url())
                .resize(1920, 1080)
                .onlyScaleDown()
                .networkPolicy(NetworkPolicy.OFFLINE)
                .into(holder.ivPostImage, new Callback() {
                    @Override
                    public void onSuccess() {

                    }

                    @Override
                    public void onError() {
                        Picasso.with(context)
                                .load(HOST + post.getImage_url())
                                .resize(1920, 1080)
                                .onlyScaleDown()
                                .into(holder.ivPostImage);
                    }
                });

以上是我用来缓存从网络加载的图像的代码。

1)您使用的是什么传输?OkHttp?2) 这些图像是否启用了缓存头,例如上次修改、ETag、缓存控制?@Mark,我不知道如何回答您的问题。我对这个很陌生,所以你在上面看到的就是我用来从网络加载图像的全部内容。所以我想你的第二个问题是否定的?磁盘缓存的使用取决于事物的网络方面。我强烈建议将毕加索配置为使用OkHttp,并记录您的网络流量,或者使用诸如Chuck()、Stetho()或Android Studio 3中的高级评测之类的工具,以实际查看完整的HTTP请求和响应。这里有一个很好的HTTP缓存入门-谢谢@Mark,我用下面的代码修复了它。静态最终长毕加索磁盘缓存大小=1024*1024*50;Downloader Downloader=新的OkHttp3Downloader(上下文,毕加索\磁盘\缓存\大小);毕加索=新的picasso.Builder(context).downloader(downloader.build();缓存大小为50MB。1)您使用的是什么传输?OkHttp?2) 这些图像是否启用了缓存头,例如上次修改、ETag、缓存控制?@Mark,我不知道如何回答您的问题。我对这个很陌生,所以你在上面看到的就是我用来从网络加载图像的全部内容。所以我想你的第二个问题是否定的?磁盘缓存的使用取决于事物的网络方面。我强烈建议将毕加索配置为使用OkHttp,并记录您的网络流量,或者使用诸如Chuck()、Stetho()或Android Studio 3中的高级评测之类的工具,以实际查看完整的HTTP请求和响应。这里有一个很好的HTTP缓存入门-谢谢@Mark,我用下面的代码修复了它。静态最终长毕加索磁盘缓存大小=1024*1024*50;Downloader Downloader=新的OkHttp3Downloader(上下文,毕加索\磁盘\缓存\大小);毕加索=新的picasso.Builder(context).downloader(downloader.build();缓存大小为50MB。