在我的应用中,我下载了一个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中。
所以这就是目前正在发生的事情。你可以用它来缓存它吗?
答案 0 :(得分:1)
如果您正在寻找内存缓存,请使用LruCache而不是HashMap。
如果您只想将其缓存60秒,那么您可能应该考虑在加载资源时编写保存数据的CacheEntry类和时间戳。
但请记住,由于XML Document将保留在Memory中,因此可能会耗尽内存。您可以考虑使用像DiskLruCache这样的磁盘缓存(取决于文档的长度)。 Disk Lru Cache
更新: 我认为你应该使用像Volley这样的库来为你做xml解析和缓存。我还建议您为http标头中的每个xml文件设置缓存周期(这将是排球方面)。 Volley Example