我有一个应用程序,它启动一系列以对话为主题的活动,我希望能够立即将它们全部弹出并返回主要活动。我查看了现有的问题:
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
方法弹出对话框时,主要活动被销毁并重新创建,而当我只使用后退按钮时,onDestroy
和onCreate
方法无法运行。有没有办法阻止主要活动以这种方式明确重新启动?
答案 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);