毕加索图片载入图书馆,一些问题

时间:2013-12-08 08:22:25

标签: android image-caching picasso

我正在构建一个小应用程序,它主要是某些商家的目录。一切都是通过REST服务获得的。我在浏览企业列表时遇到了一些处理图像的问题。

构成每个列表项的图像是背景(用作业务的“横幅”)和最多5个小图标,代表业务提供的最重要的服务。

我开始使用Picasso来异步加载这些图像,希望我可以避免创建自己的任何缓存。但是,我遇到了几个问题:

A)最大的一个是在低端手机(运行Android 2.2的LG Optimus V)上,背景/横幅,总是无法加载。我正在使用Picasso的error()选项在后台无法加载时加载占位符drawable,但是每一个都无法加载,我无法弄清楚原因。我注意到的事情:

  • 小图标加载得很好
  • Picasso的onImageLoadFailed回调实际上并没有触发。但是我用error()指定的占位符确实加载了。
  • 内存似乎不是问题,因为我完全能够加载这些横幅(相同的资产大小),如果它们是本地而不是远程。
  • 在运行2.3和一些高端设备的Droid X中不会发生此问题。

B)在所有设备上,服务图标和横幅似乎都没有缓存到磁盘(Picasso调试模式表明它们始终首先从远程源加载,然后从内存加载),即使Picasso应该这样做这是自动的。不确定我是否缺少某些设置或其他东西。

实际上,如果我可以在应用程序的开头预取它们,服务图标将是最好的,因为它们在列表(业务)项目之间重复很多。它们不能是本地资产,因为可能的服务列表可以随时增长,因此会有更多的图标定期出现。但是如果在活动开始时我可以查询我的服务列表(已经有一个REST点)并预取所有图标并缓存它们,那就太棒了。有一种'简单'的方法吗?

感谢您就这些问题提供任何指导。

1 个答案:

答案 0 :(得分:0)

迟到回答这个问题,但现在是:

A)原来是Android 2.2的SSL实施问题。我的图像可以通过HTTPS和HTTP访问。我使用的是HTTPS网址,请求失败了。我只是切换到HTTP URL,一切都在2.2

中开始正常工作

B)如果Picasso的调试模式中存在错误或者什么,我真的无法确切知道是否真的如此。在测试更多时,我注意到应用程序的缓存存储确实随着时间的推移而增加(即,更频繁地访问更多图像),这表明存在涉及缓存。但是,我认为它可以缓存HTTP响应而不是缓存的图像文件,这可以解释为什么Picasso的调试模式表明它们是从源请求的,但仍然像缓存一样快速出现。