Android 在开始新活动时终止所有其他活动

anz*_*zoi 5 flags android kill-process android-intent android-activity

我有一个 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. 这里有很多关于这个主题的问题,我阅读并应用了所有建议的解决方案,但没有奏效。

请问有人可以帮忙吗?

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

vip*_*tal 6

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

Intent intent = new Intent(this, Login.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
        finish();
Run Code Online (Sandbox Code Playgroud)

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

尝试这个。

对于 API 级别 <11

i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY | 
              Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
Run Code Online (Sandbox Code Playgroud)


jpm*_*jpm 3

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

  • 你的解决方案看起来很合理,这肯定会起作用。只需更多行即可设置标志,谢谢。可能我用这个。我很欣赏 (2认同)