我有两个活动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,但结果仍然相同。
答案 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);
这对我有好几次了。
中阅读