Android 在应用程序启动时下载XML文件,并切换到无缝使用
我正在构建一个android应用程序,可以找到附近的wifi热点。我有一个包含热点地理位置的xml文件,该xml文件位于应用程序的res/xml文件夹中。我想在应用程序启动时下载一个更新的xml文件。我有两个问题:Android 在应用程序启动时下载XML文件,并切换到无缝使用,android,download,android-xml,Android,Download,Android Xml,我正在构建一个android应用程序,可以找到附近的wifi热点。我有一个包含热点地理位置的xml文件,该xml文件位于应用程序的res/xml文件夹中。我想在应用程序启动时下载一个更新的xml文件。我有两个问题: 我应该将xml文件下载到内部存储还是外部存储?为什么?如果我应该将xml文件下载到内部存储中,我该怎么做 我希望用户能够在应用程序首次启动时使用最初嵌入的xml文件,并在下载完成时切换到新下载的xml文件。我如何才能无缝地实现这一点 谢谢看看谷歌关于安卓系统数据存储的页面。 您可以
谢谢看看谷歌关于安卓系统数据存储的页面。 您可以非常简单地下载XML文件。另一个像你这样的问题在这里被问到: 在该示例中,文件将保存到SD卡。确保更改指向SD卡的OutputStream,使其指向专用存储器,如参考页所述:
FileOutputStream fos = openFileOutput(your_xml_filename, Context.MODE_PRIVATE);
为了使切换到新XML尽可能简单,我将所有与XML相关的功能封装在一个类中,并提供切换到新XML的简单方法。比如说,
class XMLUser {
private Location someLocation;
public XMLUser(String pathToXml) {
readxmlAndSetLocations(pathToXml);
}
}
然后,只要需要更改XML文件,就可以初始化一个新的XMLUser对象。像这样:
XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE);
//... do something with it
//... update found
XMLUser xmlStuff = new XMLUser(PATH_TO_PRIVATEDATA_FILE);
另一种方法是使用相同的对象,只需从XML文件更新位置:
class XMLUser {
private Location someLocation;
public void updateLocations(String pathToXml) {
//Read your xml here and update the locations accordingly.
}
}
e、 g
你的问题有很多答案,所以我不能给出一个快速准确的答案
是的,我建议将XML数据保存到内部存储器中。XML文件的大小应该足够小,不会造成问题,从逻辑上讲,它与应用程序的内部功能相关。用户不应对此进行篡改。另外,内部存储是不可移动的,所以在用户改变SD卡的情况下,更新的数据仍然存在。它比xml文件快得多。您可以首先检查数据库是否为空,如果为空,则将xml数据放在其中,然后从服务器下载其余数据,并在需要时随时更新。
XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE);
//... do something with it
//... update found
xmlStuff.updateLocations(PATH_TO_UPDATED_XML);