我目前正在使用解析器,並且每次調用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