Java 使用Recyclerview的毕加索图像缓存
我在我的recyclerview适配器中使用毕加索从网络加载图像。我在我的recyclerview中测试了40多个项目,其中29个有图像 我注意到,在到达列表末尾时,当我向上滚动时,一些图像正在从网络而不是缓存中重新加载。有没有办法防止从网络上重新加载映像?或者可能是减少网络带宽使用的替代方案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,
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。