OnResume仅在第二次访问活动时发生

时间:2018-05-02 14:54:03

标签: java android android-studio android-activity onresume

我正在尝试为我的Android应用程序编写代码,以便在活动恢复时发生。虽然我只希望在第二次重新访问活动时发生这种情况,而不是第一次。

所以我希望用户在第一次访问活动时在onCreate方法中执行他们需要的操作,然后当他们返回活动时,会发生onResume代码。

我应该使用不同的方法还是如何实现我的目标?

public void onResume(){
    super.onResume();

    RunningStatus = sharedPreferences.getBoolean("RunningStatus", false);

    if (isS1Pressed) {
        if (isPressed) {
            if (RunningStatus = false) {
                pause.setBackgroundResource(R.drawable.start);
            }
        }
    }

编辑:

我并不是说第二次我的意思是每次都是。基本上我有一条生产线,我的应用程序决定它是先行还是后退。因此,当用户输入此活动时,可以执行计算。我们有一个暂停按钮,如果生产线在现实生活中停止,用户可以暂停该行。虽然我希望用户可以退出该特定生产线并在其他生产线上进行计算。虽然在我离开活动的那一刻,我失去了所有的状态。

由于

3 个答案:

答案 0 :(得分:0)

您可以使用布尔标志。在onResume例如

if (secondVisit) {
  ...
} else secondVisit = true;

答案 1 :(得分:0)

如果你想在非常特定的时间做一些事情(只有第二次,而不是第一次或第三次,第四次......),我建议你应该使用一些计数器变量并使用onSaveInstanceState()和onRestoreInstanceState()的活动方法来存储和检索。如果您不想在应用程序被杀死时重置计数器,请使用像SharePreference这样的数据来存储计数器。

答案 2 :(得分:0)

我假设你已经完成了活动生命周期,如果没有那么访问 https://developer.android.com/guide/components/activities/activity-lifecycle

boolean secondUse=false;//this should be a field in the activity class

onRestart()方法仅在我们访问活动时被调用,然后返回然后我们访问(即活动已经在活动堆栈中)。

如果你有其他用例,那么使用sharedPreference会更好。

覆盖onRestart() 在里面写下面的

if(!seconduse){
//do your stuff
secondUse=true;
}

正如你在编辑中所说的那样,你需要在第一次访问后的每次访问时使用的东西然后只需将你的代码放在onRestart()方法

public void onRestart(){
super.onRestart();

RunningStatus = sharedPreferences.getBoolean("RunningStatus", false);
   if (isS1Pressed) {
    if (isPressed) {
        if (RunningStatus = false) {
            pause.setBackgroundResource(R.drawable.start);
        }
    }
   }
}