缓存XML Feed

时间:2013-11-19 13:36:42

标签: java android xml caching

在我的应用中,我下载了一个XML文件。然后将该XML文件分配给变量。我现在遇到的问题是,我想缓存该XML文件。

我考虑过将每个XML文件保存到不同的变量中,但问题是我下载的XML文件不一样。它可以是可以检索的4x2x3 XML数据的组合。所以我想我会去,只下载文件一次,然后缓存大约60秒。我该怎么做?

目前,我正在下载这样的XML文件:

DocumentBuilderFactory dbf  = DocumentBuilderFactory.newInstance();
try{
    db          = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
    e.printStackTrace();
}
try{
   docComplete      = db.parse(new InputSource(new URL( BLOGS_ONLY ).openStream()));
} catch (IOException e) {
    e.printStackTrace();
}  catch (SAXException e) {
    e.printStackTrace();
}

try {
    hashMap                     = getAccordingData( docComplete     );
} catch ( NullPointerException npe ){
    mainAsyncTask.cancel(true);
    mainAsyncTask.execute( );
}

并且getAccordingData方法只将ElementsByTagName放入NodeList中,然后使用for循环将其添加到返回的HashMap中。

所以这就是目前正在发生的事情。你可以用它来缓存它吗?

1 个答案:

答案 0 :(得分:1)

如果您正在寻找内存缓存,请使用LruCache而不是HashMap。

如果您只想将其缓存60秒,那么您可能应该考虑在加载资源时编写保存数据的CacheEntry类和时间戳。

但请记住,由于XML Document将保留在Memory中,因此可能会耗尽内存。您可以考虑使用像DiskLruCache这样的磁盘缓存(取决于文档的长度)。 Disk Lru Cache


更新: 我认为你应该使用像Volley这样的库来为你做xml解析和缓存。我还建议您为http标头中的每个xml文件设置缓存周期(这将是排球方面)。 Volley Example