Android弹出活动即将开始 - 是的,再次

时间:2013-04-29 13:49:54

标签: android android-activity

我有一个应用程序,它启动一系列以对话为主题的活动,我希望能够立即将它们全部弹出并返回主要活动。我查看了现有的问题:

How to clear current activities in the stack?

how to kill sub activities and bring activity to top of stack

Android Popping off the Activity Stack

基于此提出了这个:

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这在功能上有效,但我遇到的问题是,当执行此操作时,对话框主题活动后面的屏幕会变黑并持续一秒钟,然后最终将对话框设置为离开屏幕。如果我使用后退按钮手动弹出这些活动,则不会发生这种情况。

在LogCat中我可以看到,当我使用上面的Intent方法弹出对话框时,主要活动被销毁并重新创建,而当我只使用后退按钮时,onDestroyonCreate方法无法运行。有没有办法阻止主要活动以这种方式明确重新启动?

2 个答案:

答案 0 :(得分:1)

您只需将singleTop添加到主要活动中即可。

在这里,阅读它。它带来了活动的现有实例,而不是创建一个新实例。

http://developer.android.com/guide/topics/manifest/activity-element.html

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP

答案 1 :(得分:0)

如果您将主活动添加到Backstack时添加了除null之外的其他标记,那么该如何:

transaction.addToBackStack("welcome");

然后你可以像这样弹出背斜:

FragmentManager fm = getFragmentManager();
fm.popBackStack("welcome", FragmentManager.POP_BACK_STACK_INCLUSIVE);