我试图区分一个活动是否被破坏然后重新启动,以及它何时通过标准 startActivity 调用启动。区分这一点的最佳方法是什么?我需要跟踪一个计数器,当应用程序被销毁并重新启动时,计数器不应该增加。我尝试使用 putExtra(String, String),但无论如何返回的值都是相同的。
问问题
189 次
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 回答