我有一个Android活动问题。
以下是我的流程的工作原理:
Login Activity
开始MainMenuActivity
启动,LoginActivity由我完成。MainMenuActivity
尚未完成。因为它是主菜单。当用户在设置屏幕上按下后面时,我需要返回MainMenuActivity
。所以我不能杀死MainMenu
。SettingsActivity
由我完成,登录活动开始。当用户返回登录时我需要杀死MainMenuActivity
,但我不能。:/ FLAG_ACTIVITY_SINGLE_TOP
,CLEAR_TOP
,SINGLE_TASK
,NEW_TASK
,NO_HISTORY
等等。几乎所有人都没有工作launchMode="singleTask"
,clearTaskOnLaunh="true"
等等再次发挥作用。addFlags()
和setFlags()
两个,没有工作有人可以帮忙吗?
我的应用 P.S android:minSdkVersion="8"
和android:targetSdkVersion="15"
。我没有在应用程序中使用片段,我使用旧的活动结构。
答案 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();