我目前正在使用解析器,并且每次调用onCreate时都会解析它。 我的解析器使用位于我的资产文件夹中的XML文件。仅在第一次启动时解析XML一次
是否有任何机会让我只能解析一次,而不是每次旋转屏幕或重新启动应用程序?
谢谢:)
我目前正在使用解析器,并且每次调用onCreate时都会解析它。 我的解析器使用位于我的资产文件夹中的XML文件。仅在第一次启动时解析XML一次
是否有任何机会让我只能解析一次,而不是每次旋转屏幕或重新启动应用程序?
谢谢:)
第一次完成解析时使用首选项系统存储标志,并在每次再次解析之前检查该标志。在你的OnCreate()方法中完成所有这些。
SharedPreferences settings = getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
if (!settings.getBoolean("parsed", false)) {
parseTheXML();
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("parsed", true);
editor.commit();
}
还有其他的方法,但这有一个跨应用程序重新加载/电话周期的工作 - 假设这就是你想要的。
这个问题有2个回答。最简单的一个第一:
如果你只希望这一次发生,在主要活动创建一个静态布尔并将其设置为true时,XML在被解析然后使用:
if(!isParsed)
XML.parse();
越这个问题的完整答案是确保您正确处理配置更改。
我建议你阅读this article关于如何实现配置更改处理。你应该能够通过实现这个解决这个“Android方式”问题。
希望这会有所帮助!
你可以在一个“应用程序”对象中解析你的XML并让它从那里访问。查看文档http://developer.android.com/reference/android/app/Application.html
您可以添加一个首选项。类似于 -
void setIsAppOpened() {
editor.putBoolean(APP_OPENED, true);
editor.commit();
}
将它设置在您的onCreate()中。然后,添加以下代码以检查首选项是否存在。
if (!prefs.contains(APP_OPENED))
{
//parse the XML
setIsAppOpened();
}
谢谢,这似乎工作得很好,我确实想让我的应用程序尽可能少用电池。 – Androider