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

问题描述 投票:4回答:5

我有一个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. 我把qazxsw poi,qazxsw poi等。没有再工作了。
  7. 我试过launchMode="singleTask"clearTaskOnLaunh="true"两个,没有用
  8. 这里有关于这个主题的一些问题,我阅读并应用了所有建议的解决方案并且没有工作。

有人可以帮忙吗?

P.Sazxsww poi和qazxsw poi为我的应用程序。我没有在应用程序中使用片段,我使用旧的活动结构。

android android-intent android-activity flags kill-process
5个回答
3
投票

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


3
投票

使用这样的两个标志的组合:

android:minSdkVersion="8"

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

试试这个。

对于api级别<11

android:targetSdkVersion="15"

1
投票

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

here

这仅在Intent intent = new Intent(this, Login.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish(); 活动在任务堆栈的根(开始)处仍处于活动状态时才有效。

为了防止用户从i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 活动返回Login活动,您可以在 Intent intent = new Intent(this, Login.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); 活动中覆盖Login并执行其他操作。


0
投票

像这样使用FLAG_ACTIVITY_CLEAR_TOP-

Login

0
投票
Main
  1. 在此示例中,Mainactivity自动关闭,Myactivity2 Start。还有一件事你需要添加finish();
© www.soinside.com 2019 - 2024. All rights reserved.