Android:如何从活动堆栈中完全删除活动?

时间:2011-11-03 09:45:01

标签: android android-activity history

我有两个活动FirstActivity和SecondActivity。

FirstActivity有一个意图过滤器MAIN,LAUNCHER和DEFAULT。 SecondActivity只是一个普通的活动,AndroidManifest中没有设置其他标志。

我的应用程序启用了C2DM,当收到通知时,会显示任务栏图标,单击该图标会打开SecondActivity。

通知到达有两种情况: 首先,当应用程序到达时,我的应用程序已经运行,第二个我的应用程序完全没有运行。

在第一个场景中,一切都很好。收到通知,我从通知下拉列表中单击,显示我的SecondActivity。当我按下SecondActivity完成后,应用程序进入后台。当我从Recent Applications再次启动我的应用程序时,它会显示FirstActivity,这是正确的,因为它是MAIN,LAUNCHER和DEFAULT。

在第二个场景中,收到通知,我从通知下拉列表中单击它,然后显示我的SecondActivity。当我按下SecondActivity完成后,应用程序进入后台。当我从最近的应用程序再次启动我的应用程序时,它显示错误的SecondActivity。我希望能够展示FirstActivity,因为它应该是一个全新的开始。

我在第二个场景后尝试了ForceKilling应用程序,但结果是一样的,我需要重新启动手机才能再次从FirstActivity启动。

你们有没遇到过同样的问题?还是只是我?您认为我的配置有什么问题?

我也尝试将noHistory = false设置为SecondActivity,但结果仍然相同。

5 个答案:

答案 0 :(得分:1)

从“最近的应用程序”快捷方式启动应用程序时,它将启动最后一个活动。因此,您可以尝试从应用程序列表中启动应用程序,看看它是否能解决您的问题。

答案 1 :(得分:1)

这是正确的行为..如果您通过“最近的应用程序”启动应用程序,它将指向上一个活动。 尝试通过普通应用程序列表启动它

答案 2 :(得分:0)

对于您的主Activity,尝试在Android Manifest文件中将启动模式设置为“single Instance”。对于第二个活动,将“完成任务启动”设置为true。

答案 3 :(得分:0)

在第二种情况下,我认为当app关闭时,活动堆栈是空的。所以现在你正在启动activity2,这意味着这是堆栈中唯一的活动。现在可以通过覆盖onbackpress并在第二个场景中启动activity1来实现所需的后退行为。

答案 4 :(得分:0)

你可以使用没有这样的历史记录来调用你的第二个活动,

intent1.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

这对我有好几次了。

Android Doc

中阅读