我不是要求代码,我只需要一些关于解决问题的指导。我是Android的新手,我正在做一个小项目,我从Google Images API解析JSON以获取某个关键字图像的url链接。我已经成功解析了JSON,创建了一个ListView + ArrayAdapter,并在Listview中显示了每个URL。现在我必须弄清楚如何将这些链接转换为图像(我认为使用位图),并在Listview中显示它们。我不想将它们加载到SD卡,因为这会占用每个映像的磁盘空间,而是将它们存储在缓存中。问题是,我不能使用任何第三方库进行缓存。我在谷歌搜索过,大多发现像“LazyLoad”和“Universal Image Loader”这样的东西,不幸的是它们似乎是第三方,而不是官方。我在Android开发者网站上找到了“LruCache”,但对我来说是最好的吗?你能让我知道我有什么其他选择来解决我的问题吗?
谢谢!
答案 0 :(得分:1)
您拥有图片的网址。工作流程:
不要让它变得更复杂。 Volley,Univeral Image Loader等中的任何缓存机制都只是建立在同样的概念之上,对于您想要/需要完成的事情可能是不必要的。这是我为一个简单的应用程序编写的一些代码(尽管有点过时),它以非常清晰的方式执行此操作:
if (!doesCacheFileExist(ctx, filename))
{
Log.d(TAG, "No cache exists. Downloading.");
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
Bitmap b = BitmapFactory.decodeStream(con.getInputStream());
b = postProcessBitmap(b);
cacheBitmap(ctx, b, filename);
return b;
}
else
{
Log.d(TAG, "Found cached file.");
return getCachedBitmap(ctx, filename);
}
完整代码可以在这里看到: https://github.com/zaventh/smartsquare/blob/develop/src/com/steelthorn/android/watch/smartsquare/Util.java#L48