Android + Picasso:如何从URL正确显示缓存中的图像

时间:2015-05-18 14:44:58

标签: android caching picasso

我正在开发Android应用程序,我需要在每个对象的DB中存储图像Url,然后从Web加载此图像(如果连接已打开)或从表单缓存中获取(如果没有)。 Picasso似乎是Android中处理图像的最佳库,所以我开始使用它。但我无法理解如何正确使用它。更多 - 奇怪的是,图像在第一次从API获取后立即加载到视图中,但如果用户再次启动应用程序,我们只能看到占位符(即使启用了Internet连接)。有人可以建议一个解决方案或至少任何一种最佳方法的想法吗?

我在Adapter中的代码(在ShowActivity中也是一样):

String img_url = item.getImage(); // img_url is valid image url
Picasso.with(mContext).load(img_url).placeholder(R.drawable.plchldr).fit().centerCrop().into(holder.image);

2 个答案:

答案 0 :(得分:0)

我也试图在开始时使用Picasso,并发现他们的缓存系统非常糟糕。 它会缓存我下载的一些图像,但不会缓存其他图像,因此会留下很多带占位符的图像。

我建议您尝试使用Universal-Image-Loader(https://github.com/nostra13/Android-Universal-Image-Loader)。我目前正在使用它来缓存我的应用程序中的所有图像,并且它可以完美地工作(大约200张图像atm)。

答案 1 :(得分:0)

最后得到了问题 - API正在返回有效的图像url但实际上它(图像)托管在S3云上并且它将到期,直到用户再次加载应用程序。因此,在这种情况下,实际保存过期的图像URL是没用的。我不知道我会在这里做什么(似乎这里唯一的方法就是硬 - 将图像存储在SD上作为Bitmap)。但我只是想告诉那些会遇到类似问题的人。