所以,我正在开始我的项目,并希望在我的项目中使用Picasso,因为它很受欢迎并被许多项目所使用。 我使用gradle包括picasso并尝试加载facebook个人资料网址。 http://graph.facebook.com/rohitiskul/picture
效果很好。它从网络加载图像没有任何问题。我重新启动了应用程序。(实际上没有杀死进程)。它向我展示了在Memory中即时缓存的相同图像。 但后来,我杀了应用程序(强制停止)并重新启动。加载图像花了将近10秒钟。当我检查调试日志时,该图像是从磁盘加载的。
我的代码看起来像这样 - 在MainActivity中 -
Picasso.with(context)
.load("http://graph.facebook.com/rohitiskul/picture")
.into(imageView);
在应用程序类中 -
Picasso picasso = new Picasso.Builder(this)
.indicatorsEnabled(true).loggingEnabled(true).build()
Picasso.setSingletonInstance(picasso);
有类似问题的人吗?任何解决方案都会有所帮助。
我尝试使用UniversalImageLoader加载相同的Url,从磁盘获取缓存的图像时速度很快。
修改
在使用我的应用程序时,我发现Picasso在设备离线时没有加载磁盘缓存图像。
答案 0 :(得分:1)
我遇到同样的问题, 但发现第一张图片的速度很慢,以后的图片会很快。
可能需要预热(加载索引缓存)?
答案 1 :(得分:1)
好的,我遇到了你的问题。我已经修好了这个
Picasso.with(context)
.load("http://graph.facebook.com/rohitiskul/picture")
.networkPolicy(NetworkPolicy.OFFLINE)
.into(imageView, new Callback() {
@Override
public void onSuccess() { }
@Override
public void onError() {
// Try again online if cache failed
Picasso.with(context)
.load("http://graph.facebook.com/rohitiskul/picture")
.into(imageView);
}
});
说明:
答案 2 :(得分:0)
我之前也遇到过这个问题,据我所知,毕加索根据网址中提到的图片名称引用了缓存图片。
在您的情况下,您在网址中没有图片名称,例如' image1.jpg'。由于毕加索发现很难从缓存中读取并且每次都下载图像
您可以尝试在URL中包含图像名称的图像,并且该图像将起作用
答案 3 :(得分:0)
Picasso并不提供开箱即用的磁盘缓存。相反,它依赖于Http Cache。
确保将OkHttp添加到依赖项列表中。
答案 4 :(得分:0)
发出请求时,使用stableKey
方法添加字符串标识符,以便Picasso可以识别您的请求并快速从缓存中加载它。
示例:
Picasso.Builder(context).loggingEnabled(true).build()
.load(imageUrl)
.stableKey("myImage")
.into(imageView)