我有一个包含100多行的列表视图。每次用户打开应用程序时,它都会加载来自http的所有数据。我想缓存这些数据,以便如果要打开该活动,它应该从缓存中获取,而不是每次都从http中获取。
我也在考虑添加一些标志来清除缓存(如果由于某种原因,如果我的URL更改它不应该读取缓存版本而不是获取最新的URL
我不确定在sd卡和sqllite中使用缓存是什么。
我的listview包含网址,艺术家,名字......这些都是这样的引用:
<song>
<id>1</id>
<title>Someone Like You</title>
<artist>Adele</artist>
<duration>4:47</duration>
<plays>1662</plays>
<songs_url>http://website/music/someonelikeyou.mp3</songs_url>
<thumb_url>http://website/music/images/adele.png</thumb_url>
</song>
这是从http:
读取的代码// Getting XML from URL making HTTP request
// @param url string
public String getXmlFromUrl(String url) {
String xml = null;
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// return XML
return xml;
}
答案 0 :(得分:1)
SQLite当然。这是为了拥有这样的信息之王。选择过滤后的信息非常快捷。
对于图像(如拇指),请使用缓存文件夹:context.getExternalCacheDir().getAbsolutePath()
答案 1 :(得分:0)
以下是两个主要案例:
解析XML并向用户显示数据。
从互联网上加载XML
保存和删除XML文件比清除数据库“更难”操作
您可以从数据库中清除特定项目。 /你无法用XML做到这一点
您可以从数据库中查询过滤后的数据。 /你不能用XML(仅在解析后)
您可以添加数据库附加列,如图像缓存文件夹路径等。
获取数据并将数据保存到数据库是更快更优雅的方式。