【发布时间】:2010-12-25 05:33:04
【问题描述】:
我目前正在开发一个使用 http 请求获取图像的 Android 应用程序。如果我可以缓存这些图像以提高性能和带宽使用率,那就太好了。
我在 Android 参考资料中看到了 CacheManager 类,但我真的不知道如何使用它,也不知道它到底有什么作用。
我已经了解了这个例子,但我需要一些帮助来理解它:
/core/java/android/webkit/gears/ApacheHttpRequestAndroid.java
另外,参考说明:
“向此组件提供网络请求,如果缓存无法解析它们,则将 HTTP 标头酌情附加到重新验证内容的请求中。”
我不确定这意味着什么或它对我的工作方式,因为 CacheManager 的 getCacheFile 只接受一个字符串 URL 和一个包含标题的 Map。不知道提到的附件是什么意思。
一个解释或一个简单的代码示例真的会让我很开心。谢谢!
更新
这就是我现在所拥有的。我显然做错了,只是不知道在哪里。
公共静态位图getRemoteImage(字符串imageUrl){ URL aURL = null; URLConnection 连接 = 空; 位图 bmp = null; CacheResult cache_result = CacheManager.getCacheFile(imageUrl, new HashMap()); if (cache_result == null) { 尝试 { aURL = 新 URL(imageUrl); conn = aURL.openConnection(); 连接.connect(); InputStream = conn.getInputStream(); cache_result = new CacheManager.CacheResult(); copyStream(就是,cache_result.getOutputStream()); CacheManager.saveCacheFile(imageUrl, cache_result); } 捕捉(异常 e){ 返回空值; } } bmp = BitmapFactory.decodeStream(cache_result.getInputStream()); 返回 bmp; }【问题讨论】:
-
这段代码有什么错误?
-
E/AndroidRuntime(3097):致命异常:主要 E/AndroidRuntime(3097):java.lang.NullPointerException E/AndroidRuntime(3097):在 android.webkit.CacheManager.saveCacheFile(CacheManager.java :459)是我尝试保存到缓存时得到的,如果可能的话,我想知道如何添加赏金。 E/AndroidRuntime(3097): 在 android.webkit.CacheManager.saveCacheFile(CacheManager.java:453)
标签: android caching httpwebrequest