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 中检查包是否为空包,但我尚未完全测试该逻辑。

于 2011-05-05T19:09:25.320 回答