【发布时间】:2011-05-05 19:01:24
【问题描述】:
我试图区分活动是否被销毁然后重新启动,以及何时通过标准 startActivity 调用启动。区分这一点的最佳方法是什么?我需要跟踪一个计数器,当应用程序被销毁并重新启动时,计数器应该不增加。我尝试使用 putExtra(String, String),但无论如何返回的值都是相同的。
【问题讨论】:
标签: android android-intent bundle lifecycle destroy
我试图区分活动是否被销毁然后重新启动,以及何时通过标准 startActivity 调用启动。区分这一点的最佳方法是什么?我需要跟踪一个计数器,当应用程序被销毁并重新启动时,计数器应该不增加。我尝试使用 putExtra(String, String),但无论如何返回的值都是相同的。
【问题讨论】:
标签: android android-intent bundle lifecycle destroy
您可以尝试使用标志 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 中检查包是否为空包,但我尚未完全测试该逻辑。
【讨论】: