我目前正在开发一个使用 http 请求获取图像的 Android 应用程序。如果我可以缓存这些图像以提高性能和带宽使用,那就太好了。
我在 Android 参考中遇到了 CacheManager 类,但我真的不知道如何使用它,也不知道它的真正用途。
我已经了解了这个示例的范围,但我需要一些帮助来理解它:
/core/java/android/webkit/gears/ApacheHttpRequestAndroid.java
另外,参考文献指出:
“网络请求被提供给该组件,如果缓存无法解析这些请求,则 HTTP 标头将酌情附加到请求中以重新验证内容。”
我不确定这意味着什么或者它对我来说如何工作,因为 CacheManager 的 getCacheFile 只接受字符串 URL 和包含标头的映射。不确定提到的附件是什么意思。
一个解释或一个简单的代码示例真的会让我很开心。谢谢!
Update
这就是我现在所拥有的。我显然做错了,只是不知道错在哪里。
public static Bitmap getRemoteImage(String imageUrl) {
URL aURL = null;
URLConnection conn = null;
Bitmap bmp = null;
CacheResult cache_result = CacheManager.getCacheFile(imageUrl, new HashMap());
if (cache_result == null) {
try {
aURL = new URL(imageUrl);
conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
cache_result = new CacheManager.CacheResult();
copyStream(is, cache_result.getOutputStream());
CacheManager.saveCacheFile(imageUrl, cache_result);
} catch (Exception e) {
return null;
}
}
bmp = BitmapFactory.decodeStream(cache_result.getInputStream());
return bmp;
}
我不认为 CacheManger 可以在 WebView 之外使用,如本错误报告中所述http://code.google.com/p/android/issues/detail?id=7222
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)