0

アクティビティが破棄されてから再開されるのか、標準のstartActivity呼び出しで開始されるのかを区別しようとしています。これを区別するための最良の方法は何ですか?カウンターを追跡する必要があります。アプリが破棄されて再起動されたときに、カウンターをインクリメントしないでください。putExtra(String、String)を使用してみましたが、返される値は同じです。

4

1 に答える 1

2

フラグisSavedInstanceStateを使用してみることができます。onResumeでこのフラグをfalseに設定します。onSaveInstanceStateでこのフラグをtrueに設定します。onStopでこのフラグを確認してください。

@Override
protected void onStop(){
   super.onStop();
   if (!isSavedInstanceState){ // this is a HARD KILL, write to prefs
       SharedPreferences prefs = getPreferences(MODE_PRIVATE);
       SharedPreferences.Editor editor = prefs.edit();
       editor.putYourCounterIncrementHere
       editor.commit();
       Log.d(TAG,"savedPrefs");
   }
   else {
       Log.d(TAG,"DidNotSavePrefs");
   }
   Log.d(TAG,"onStop");
}

これにより、ハードキル時にカウンターが増加します。必要に応じて、onCreateでバンドルのnullバンドルを確認できますが、そのロジックを完全にテストしていません。

于 2011-05-05T19:09:25.320 に答える