Android会在启动新活动时终止所有其他活动

时间:2013-12-06 09:57:36

标签: android android-intent android-activity flags kill-process

我有一个Android活动问题。

以下是我的流程的工作原理:

  1. Login Activity开始
  2. 登录成功。 MainMenuActivity启动,LoginActivity由我完成。
  3. 用户触摸设置并启动了SettingsActivity。 MainMenuActivity尚未完成。因为它是主菜单。当用户在设置屏幕上按下后面时,我需要返回MainMenuActivity。所以我不能杀死MainMenu
  4. 用户触发了注销,SettingsActivity由我完成,登录活动开始。当用户返回登录时我需要杀死MainMenuActivity,但我不能。:/
  5. 我尝试了FLAG_ACTIVITY_SINGLE_TOPCLEAR_TOPSINGLE_TASKNEW_TASKNO_HISTORY等等。几乎所有人都没有工作
  6. 我把launchMode="singleTask"clearTaskOnLaunh="true"等等再次发挥作用。
  7. 我尝试了addFlags()setFlags()两个,没有工作
  8. 这里有很多关于这个主题的问题,我阅读并应用了所有建议的解决方案,但没有工作。
  9. 有人可以帮忙吗?

    我的应用

    P.S android:minSdkVersion="8"android:targetSdkVersion="15"。我没有在应用程序中使用片段,我使用旧的活动结构。

5 个答案:

答案 0 :(得分:3)

我建议启动结果的设置活动(请参阅here),当用户请求注销时,请相应地设置结果。您将在MainActivity的onActivityResult中获得此结果(请参阅here)并可以在那里处理注销,在启动loginActivity之前完成mainActivity。

答案 1 :(得分:3)

使用两个标志的组合,如下所示:

Intent intent = new Intent(this, Login.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
        finish();

这将删除所有其他活动并启动此活动。

试试这个。

对于api级别< 11

i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY | 
              Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

答案 2 :(得分:1)

我建议你在启动主菜单时没有完成Login活动。然后,您可以通过执行以下操作清除所有注销活动:

    Intent intent = new Intent(this, Login.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

仅当Login活动在任务堆栈的根(开头)仍处于活动状态时,此操作才有效。

要阻止用户退回Login活动中的Main活动,您可以覆盖onBackPressed()活动中的Main并执行其他操作。

答案 3 :(得分:0)

像这样使用FLAG_ACTIVITY_CLEAR_TOP-

Intent loginIntent = new Intent(this, Login.class);
        loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(loginIntent);
    finish();

答案 4 :(得分:0)

Intent intent = new Intent(MainActivity.this, MyActivity2.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(intent);
                    finish();
  1. 在此示例中,Mainactivity自动关闭,Myactivity2 Start。 还有一件事你需要添加finish();