我正在构建一个小型应用程序,主要是某些企业的目录。一切都是通过 REST 服务获得的。在浏览企业列表时,我在处理图像时遇到了一些问题。
组成每个列表项的图像是一个背景(充当企业的“横幅”)和最多 5 个小图标,代表企业提供的最重要的服务。
我开始使用 Picasso 异步加载这些图像,希望可以避免创建自己的任何缓存。但是,我遇到了几个问题:
A) 最大的问题是在低端手机(运行 Android 2.2 的 LG Optimus V)上,背景/横幅总是无法加载。当背景无法加载时,我正在使用 Picasso 的 error() 选项来加载可绘制的占位符,但是每个都无法加载,我不知道为什么。我注意到的事情:
- 小图标加载就好了
- Picasso 的 onImageLoadFailed 回调实际上并未触发。但是我用 error() 指定的占位符确实会加载。
- 内存似乎不是问题,因为如果它们是本地的而不是远程的,我完全能够加载这些横幅(相同的资产大小)。
- 在运行 2.3 的 Droid X 和一些更高端的设备中不会发生此问题。
B)在所有设备上,服务图标和横幅似乎都没有缓存到磁盘(Picasso 调试模式表明它们总是首先从远程源加载,然后从内存中加载),即使 Picasso 应该自动执行此操作。不确定我是否缺少某些设置或其他内容。
实际上,如果我可以在应用程序开始时预取服务图标,那将是最好的,因为它们在列表(业务)项目之间重复了很多。它们不能是本地资产,因为可能的服务列表可以随时增加,因此会定期出现更多图标。但是,如果在活动开始时我可以查询我的服务列表(已经有一个 REST 点)并预取所有图标并缓存它们,那就太好了。是否有捷径可寻?
感谢您对这些问题的任何指导。