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