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

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

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

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

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

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

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

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

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

我希望这将有所帮助。