当按下主页按钮时,在android中保存活动状态

时间:2009-10-24 09:28:00

标签: java android android-activity

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

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

2 个答案:

答案 0 :(得分:5)

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

当您从Eclipse,命令行启动应用程序或安装应用程序并按下“打开”按钮(而不是“完成”按钮)以在安装后立即启动应用程序时,会发生此行为。

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

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

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

答案 1 :(得分:4)

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

我希望这会有所帮助。