現在、パーサーを使用しており、onCreateが呼び出されるたびに解析します。 私のパーサは、私の資産フォルダにあるXMLファイルを使用します。1回目の起動時にXMLを1回だけ解析します。
画面を回転させるかアプリケーションを再起動するたびに1回だけ解析する可能性はありますか?
ありがとうございました。
現在、パーサーを使用しており、onCreateが呼び出されるたびに解析します。 私のパーサは、私の資産フォルダにあるXMLファイルを使用します。1回目の起動時にXMLを1回だけ解析します。
画面を回転させるかアプリケーションを再起動するたびに1回だけ解析する可能性はありますか?
ありがとうございました。
初めて解析を完了したときに、環境設定システムを使用してフラグを保持し、毎回これを確認してから再度解析します。 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つの回答があります。最初の簡単なもの:。
あなたはこれだけは、一度起こるあなたの主な活動に静的なブール値を作成し、XMLがで解析されたときにこれをtrueに設定したい場合は、使用します。
if(!isParsed)
XML.parse();
よりこの質問に対する完全な答えは、構成の変更を正しく処理していることを確認することです。
構成変更処理の実装方法については、this articleをお読みになることをお勧めします。これを実装することで、この問題を「Androidの方法」で解決できるはずです。
希望すると便利です。
"Application"オブジェクトでXMLを解析し、その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