gpt4 book ai didi

android - 使用 Android 的系统缓存

转载 作者:搜寻专家 更新时间:2023-11-01 08:14:31 25 4
gpt4 key购买 nike

我想在按照这些先前的说明下载图像时使用 Android 的系统缓存:android system cache .我能够使以下代码正常工作,但日志语句告诉我图像永远不会从缓存中读取。

try {
//url = new URL("http://some.url.com/retrieve_image.php?user=" + username);
URL url = new URL("http://some.url.com/prof_pics/b4fe7bdfa174ff372c9f26ce6f78f19c.png");
URLConnection connection = url.openConnection();
connection.setUseCaches(true);
Object response = connection.getContent();
if (response instanceof Bitmap) {
Log.i("CHAT", "this is a bitmap");
current_image.setImageBitmap((Bitmap) response);
}
else {
Log.i("CHAT", "this is not a bitmap");
Log.i("CHAT", response.toString());
InputStream is = connection.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
current_image.setImageBitmap(BitmapFactory.decodeStream(bis));
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

我尝试了两种不同类型的请求,一种是通过返回图像的 PHP 脚本,另一种是直接访问图像文件。我连续多次刷新同一张图片,但它似乎永远不会被缓存。对于直接图像访问,我得到:

05-31 23:45:12.177 I/CHAT    ( 2995): this is not a bitmap
05-31 23:45:12.177 I/CHAT ( 2995): org.apache.harmony.luni.internal.net.www.protocol.http.FixedLengthInputStream@40c1c660`

对于间接图像访问,我始终得到:

05-31 23:45:14.550 I/CHAT    ( 2995): this is not a bitmap
05-31 23:45:14.550 I/CHAT ( 2995): org.apache.harmony.luni.internal.net.www.protocol.http.ChunkedInputStream@40c02448

最佳答案

我找到了更好的方法。如果其他人在点击链接后遇到问题 android system cache , 使用这个 Google developer's blog post反而。该博客文章中的源代码是为 ListView 设计的,但我将它用于所有图像检索。它在 AsyncTask 中下载图像,在下载时放置一个临时图像,并且有一个图像缓存。最后一部分在博文中被列为“ future 项目”,但如果您下载源代码,缓存就会实现。我不得不稍微修改代码,因为 AndroidHttpClient 在 2.1 中不受支持。我将其切换为 URL 连接。到目前为止,这看起来是一个很棒的图像下载器类。我们只是希望它不会影响我们已经苦苦挣扎的内存管理问题。

关于android - 使用 Android 的系统缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com