【问题标题】:Android - how to differentiate activity restart from a "normal" startAndroid - 如何区分活动重启和“正常”启动
【发布时间】:2011-05-05 19:01:24
【问题描述】:

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

【问题讨论】:

    标签: android android-intent bundle lifecycle destroy


    【解决方案1】:

    您可以尝试使用标志 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 中检查包是否为空包,但我尚未完全测试该逻辑。

    【讨论】:

    • 谢谢。看起来 onSaveInstanceState 仅在应用程序被终止时调用 - 否则它将为空。这正是我所需要的。
    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多