2012-04-23 3 views
0

初めてアクティビティを開始したときにダイアログを表示する必要があります。 だから、私はプロセスがアンドロイドで自分のアクティビティを殺害したときに自分のプライベートの日付を保存できるかどうか

public void onCreate(Bundle savedInstanceState) 

で、私の打ち上げの時間を節約するために

protected void onSaveInstanceState (Bundle outState) 

を使用することを行います。私はOSが古いものを使うのではなく、新しい "バンドルのoutstate"を作成することに気付きました。そして、Oncreateの日付をデバッグすることはできません。

私の質問:私はonSaveInstanceStateに保存されて

  1. 日、本当にOnCreateイベントで読み取ることだろうか?どのようにデバッグするのですか?

  2. OSによってプロセスが強制終了されると、状態を保存したり、OSによって削除されたりすることなく、私はprivateメンバーのみを使用して変更できますか?

ありがとうございました。

+0

私はonSaveInstanceStateをテストし、日付が保存されません。私はそれを処理するために静的を使用する必要があります。しかし私は静的な発見私は私のアプリを再起動するときに開始されません。私はOnDestroyでそれを殺さなければならない。どのように愚かなアンドロイドです! – AmyWuGo

+0

どのように愚かなAndroidは?私はあなたが問題はAndroidではないことを見つけるだろうと思う! 「私はonSaveInstanceStateをテストすると、日付は保存されません」と言ったら、どういう意味ですか?私はonSaveInstanceをたくさん使用し、うまく動作します。どのようにしてバンドルに日付を格納していますか?コードを表示してください。そして、申し訳ありませんが、私は静的であなたが何を話しているのか、 "OnDestroyでそれを殺さなければなりません"とは考えていません。何を殺すの?静的な? onSaveInstanceで静的変数を使用する必要はありません。 – Simon

+0

そして、onCreateで日付をデバッグするには、それを保持しているどのフィールドにも値を代入しないで、値をlogcatに書き込むのはなぜですか? – Simon

答えて

0

Bundleは、アプリケーションを再起動してもデータを伝送することはできません。あなたがより良いonCreate()にこのコードを入れ、SharedPreferencesのような、より恒久的なストレージにデータを保存したい

SharedPreferences prefs; 
prefs = getSharedPreferences("preferences", Context.MODE_PRIVATE); 
long last_run_time = prefs.getLong('last_run', 0); 
if(last_run_time == 0) { // zero means your app has never been run 
    // display dialog, this is the first time! 
    .... 
    // this saves current system time to prevent your dialog being seen again 
    prefs.edit().putLong('last_run', system.currentTimeMillis()).commit(); 
} 
+0

素敵な答えをありがとう。しかし、すべての時間ではなく、初めて作成時にいくつかのダイアログを表示したい。あなたは私の活動がOSによって殺されるかもしれないことを知っています。もし私がSharedPreferencesを使ってOnpauseで自分のデータを保存するだけであれば、それが最初か二番目かを知ることはできません。 – AmyWuGo

+0

改訂版をご覧ください。ダイアログを表示するかどうかを確認する方法を追加しました。また、正確な実行時間を保存する必要はありません。ダイアログが表示されたときに、設定にブール値を保存するだけです。私の答えの主なポイントは、 'savedInstanceState'を長時間生きるべき値に使わないことです。 – lenik

+0

ありがとうございます。あなたはとても優しです。たぶん私はあまり明確ではない。異常終了した場合、「アプリは異常終了しました。最後に」を置く必要があります。今私はonSaveInstanceStateをもう一度試しました、それは今までうまく動作します。ありがとうございました! – AmyWuGo

関連する問題