2011-07-29 16 views
0

現在、パーサーを使用しており、onCreateが呼び出されるたびに解析します。 私のパーサは、私の資産フォルダにあるXMLファイルを使用します。1回目の起動時にXMLを1回だけ解析します。

画面を回転させるかアプリケーションを再起動するたびに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(); 
    } 

これには他の方法もありますが、これはアプリのリロード/電話の電源サイクル全体を処理するという利点があります。

+0

ありがとう、これはうまくいくように見えます。 – Androider

2

この質問には2つの回答があります。最初の簡単なもの:。

あなたはこれだけは、一度起こるあなたの主な活動に静的なブール値を作成し、XMLがで解析されたときにこれをtrueに設定したい場合は、使用します。

if(!isParsed) 
    XML.parse(); 

よりこの質問に対する完全な答えは、構成の変更を正しく処理していることを確認することです。

構成変更処理の実装方法については、this articleをお読みになることをお勧めします。これを実装することで、この問題を「Androidの方法」で解決できるはずです。

希望すると便利です。

+0

しかし、アクティビティを離れる前に 'isParsed'の状態を永続的に(例えば' SharedPreferences'で)保存し、アプリケーションが起動するたびに値をチェックする必要があります。 – iDroid

+0

アプリケーションのインストールされたライフタイム全体で一度ではなく、アプリケーションのライフサイクルごとに一度XMLを解析するように思えます。そうであれば、sharedpreferencesが行く方法です。 – Codeman

+0

私は確かにインストールされたアプリケーションごとに一度だけ解析することを願っています:) – Androider

1

あなたが設定を追加することができます。何かのように -

void setIsAppOpened() { 
    editor.putBoolean(APP_OPENED, true); 
    editor.commit(); 
} 

あなたのonCreate()に設定します。次に、次のコードを追加して、環境設定が存在するかどうかを確認します。

if (!prefs.contains(APP_OPENED)) 
    { 
     //parse the XML 
     setIsAppOpened(); 
    } 
関連する問題