1

我遇到了与 home 键相关的问题。当我按下主页键时,当前活动被隐藏,但是当我再次启动可执行文件时,它从第一个屏幕开始。我已经覆盖了所有方法(onSaveInstanceState、onPause、onStop onResume),但仍然存在问题。处理这个问题的正确方法是什么?

当我按下主页按钮时,我将小部件状态存储在数据库中,当我再次启动可执行文件时,我正在检查数据库状态并启动用户按下主页按钮时保存的新 Intent。这是正确的方法吗,因为当用户执行相同操作并再次按下后退按钮时我面临问题,活动堆栈中已经有可用的意图。

4

2 回答 2

5

我已经为这种奇怪的行为挣扎了一个多月,但我终于通过反复试验找到了解释。

当您从 Eclipse、命令行启动应用程序或安装应用程序并在安装后立即按下 Open 按钮(而不是 Done 按钮)启动应用程序时,就会发生这种行为。

如果在其中一种情况下,您启动应用程序,转到 Activity1,然后转到 Activity 2,按 HOME 按钮,然后按应用程序图标,它将打开 Activity1 的新实例。不要相信我的话。只需按 BACK 即可看到它会将您带到您按 HOME 时离开的 Activity2。

如果应用程序以上述方式之一启动,则启动器活动似乎不会放在活动堆栈中,这就是为什么它在应用程序堆栈中的当前活动之上创建启动器活动的新实例的原因。这在我看来就像一个错误。

因此,解决方法是退出应用程序,第一次从 Eclipse 或命令行或打开按钮等启动时,根据需要多次按 BACK 按钮,然后再次进入应用程序。从那时起,行为将如预期的那样。

于 2011-01-24T13:25:17.693 回答
4

根据您的描述,您可能已经在 AndroidManifest.xml 中覆盖了android:launchMode,或者如果您通过 Eclipse 的“运行方式”进行测试,请尝试在安装和自动启动后退出应用程序。然后从模拟器重新开始并测试 Home 按钮的行为。我想这是因为 Android 在从 Eclipse 启动时没有将活动放在操作系统堆栈上,然后主页按钮的行为不像往常一样。如果这不能解决您的问题,请尝试阅读http://developer.android.com/guide/topics/fundamentals.html#lmodes

我希望这将有所帮助。

于 2009-10-24T23:11:38.767 回答