Android-如何区分活动重启和“重启”;“正常”;开始

Android-如何区分活动重启和“重启”;“正常”;开始,android,android-intent,bundle,lifecycle,destroy,Android,Android Intent,Bundle,Lifecycle,Destroy,我试图区分一个活动是被销毁然后重新启动还是通过标准startActivity调用启动。最好的区分方法是什么?我需要跟踪计数器,当应用程序被销毁并重新启动时,计数器不应增加。我尝试使用putExtra(String,String),但返回的值无论如何都是相同的 您可以尝试使用标志isSavedInstanceState。在onResume中将此标志设置为false。在onSaveInstanceState中将此标志设置为true。在顶部选中此标志 @Override protected void

我试图区分一个活动是被销毁然后重新启动还是通过标准startActivity调用启动。最好的区分方法是什么?我需要跟踪计数器,当应用程序被销毁并重新启动时,计数器不应增加。我尝试使用putExtra(String,String),但返回的值无论如何都是相同的

您可以尝试使用标志isSavedInstanceState。在onResume中将此标志设置为false。在onSaveInstanceState中将此标志设置为true。在顶部选中此标志

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

谢谢。看起来onSaveInstanceState只有在应用程序被终止时才被调用,否则它将为null。这正是我需要的。