在暂停/退出SecondActivity后恢复为MainActivity

时间:2016-05-24 09:39:32

标签: android onresume onpause

我正在尝试创建一个包含多个活动的应用。

起始活动(MainActivity)充当目录或其他活动链接的起始页。

有问题的活动之一(SecondActivity)是游戏玩法基本上发生的活动。它限制了倒数计时器。

我担心的是,当处于SecondActivity(或除MainActivity之外的任何其他活动)的中间时,如果SecondActivity因任何原因暂停或停止,我打算让应用程序在MainActivity而不是最后一个Activity上恢复在(例如SecondActivity)。

我已尝试将以下内容放入OnResume

{{1}}

但是上面的内容在启动SecondActivity后立即重定向回MainActivity。显然,我希望SecondActivity能够播放并执行它想要做的事情,只是在玩家暂停/停止(例如启动另一个应用程序,电话等)时恢复到MainActivity。这样做的原因是SecondActivity跟踪会话的分数并受到预定时间的限制,如果玩家可以退出应用程序并返回继续他离开的地方,则会成为更高分数的作弊。

如果由于某种原因停止/暂停SecondActivity,是否仍然会在重启时自动恢复为MainActivity?

3 个答案:

答案 0 :(得分:0)

如果MainActivity总是存在于后台堆栈中,您可以将SecondActivity作为startActivityForResult(intent);启动 并且在捕获后导致MainActivity(取决于结果,您可以重置它)

Getting a Result from an Activity

答案 1 :(得分:0)

我认为你可以声明一个布尔变量,它指示是否启动了secondActivity ..如果它尚未启动,则设置mIsLaunched = true,如果启动则启动MainActivity

Boolean mIsLaunched = false;

@Override
protected void onResume() {
    super.onResume();
    if(mIsLaunched){
      Intent revrt = new Intent(SecondActivity.this, MainActivity.class);
      revrt.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      startActivity(revrt); 
      finish();
    } else {
        mIsLaunched = true;
    }
}

使用此方法在退出前保存值

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean("IS_LAUNCHED", mIsLaunched);
}

并再次使用

获取值
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    mIsLaunched = savedInstanceState.getBoolean("IS_LAUNCHED");
}

答案 2 :(得分:0)

正如您所说,当第二个活动暂停或停止时,您想要调用主要活动。

因此,您应该在onStop和onPause方法中调用Main Activity而不是onResume方法。因为当此活动将出现在前台时,将始终调用第二个活动的onResume方法。

...一样

@Override
protected void onPause() {
Intent revrt = new Intent(SecondActivity.this, MainActivity.class);
revrt.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(revrt); 
finish();
super.onPause();
}

希望这对你有所帮助。