2010-01-23 89 views
0

按下硬主页按钮后,我遇到了一种奇怪的行为。 当您按Home时,一切正常 - 我的应用程序转到背景,显示主屏幕。但是,如果您尝试在主菜单或最后一个任务列表中选择我的应用程序,它的行为就像之前没有启动过,并且不显示您最后一次的活动 - 它只是从头开始,即显示启动画面并开始下一个相应的活动。此外,此应用程序的旧活动仍保留在活动堆栈中,并且应用程序的先前实例未终止 - 因此,如果您多次按“返回”,则只会遇到上一次工作期间无疑开始的那些活动与我的应用程序。初始屏幕活动由“android.intent.action.MAIN”过滤器和“android.intent.category.LAUNCHER”类别过滤。 奇怪的是,尽管我不拦截任何后退键击或覆盖任何onPause或onResume方法,所有这一切发生。发生了什么与我对Android应用生命周期的理解相矛盾 - 我确信,当你点击Home时,一个应用会跳到后台,当你在后面的菜单中选择它时,它就会放松并且不会重新开始。 (当然,除非在应用程序清单中声明类似的东西,或者相应的方法被覆盖或其他)。 我也检查了一些其他生命周期事件 - 如改变方向或翻转硬键盘 - 并没有导致这种奇怪的结果。当您尝试从主菜单或最后一个应用程序的菜单启动应用程序时,会出现问题。 我希望你能帮助我。任何关于要注意什么或在哪里寻找解决方案的建议都会非常棒。奇怪的主页按钮行为

问候,亚历克斯

回答

0

你需要设置android:launchMode="singleTask"在你的发射活动在您的清单文件。

有关launchMode更多信息属性看here

需要注意的是:

默认模式为 “标准”。

和:

每 时间有一个 “标准”活动新的意图,中 一个新的实例类是创建于 这一意图做出回应。

+0

非常感谢您的回复。 不幸的是,更改launchMode并没有帮助。它影响我的启动画面活动的onCreate或onResume是否先被调用,lol :)但是,真正的问题是,当您尝试在最小化应用程序后打开应用程序时,系统不会从栈顶开始执行最后一个活动,而是指LAUNCHER活动,并尝试重新创建或恢复它 - 无关紧要。我只是对这样奇怪的活动选择感到困惑,以便在应用程序重新打开时向用户展示 - 例如,本地消息应用程序总是让你回到你所在的位置,而不是开始。 – 2010-01-23 09:47:17

+0

这对你的飞溅活动没有多大意义。您的启动活动是否配置为您的清单中的LAUNCHER活动? – 2010-01-23 15:41:00

+0

你可能也想看看这里:http://stackoverflow.com/questions/2061143/android-keep-tasks-activity-stack-after-restart-from-home/2061447 – 2010-01-23 15:44:34