将XML / JSON响应缓存到我的应用程序中的最佳方法。全文档?

时间:2011-10-03 10:21:17

标签: android xml json web-services caching

我目前在各种应用程序中使用XML或JSON Web服务。

我只是想知道在文本文件中将这些答案缓存的最简单方法是什么。

我一直在考虑数据库,但这似乎过于复杂!

所以,我想做的是

  1. 将这些xml / JSON文件存储在手机内存中,我应该这样做吗?

    String FILENAME = "MyXmlFile";
    String string = "hello world!";
    
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    fos.write(string.getBytes());
    fos.close();  
    
  2. 在我的应用程序的onCreate中,我想解析这个文件。由于所有教程都展示了如何从Web URL解析文件,我从未找到解析内部文本文件的方法。有人就此提出建议吗?

  3. 感谢。

3 个答案:

答案 0 :(得分:1)

您可以应用SharedPreferences,它也是一个XML文件。首先解析您的JSON / XML,提取所有键/值然后写入您的pref文件。下次加载onCreate()时,只需从pref重新加载键/值。 这个样本可能会给你一个开始:
http://android-er.blogspot.com/2011/01/example-of-using-sharedpreferencesedito.html

答案 1 :(得分:1)

另一种方法是使用一个很棒的http-request库。它允许您使用ETag来检查响应是否未被修改(HTTP 304 Not Modified)。如果未修改,请使用文件缓存中的JSON,否则请求获取新资源。

File latest = new File("/data/cache.json");
HttpRequest request = HttpRequest.get("http://google.com");
//Copy response to file
request.body(latest);
//Store eTag of response
String eTag = request.eTag();
//Later on check if changes exist
boolean unchanged = HttpRequest.get("http://google.com")
                               .ifNoneMatch(eTag)
                               .notModified();

答案 2 :(得分:0)

它将与您编写XML / JSON相反。 使用openFileInput获取FileInputStream。将流读取为字符串,然后解析它。