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

问题描述:

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

当我按下home键,我在数据库中存储的部件状态,当我再次启动exectable我检查数据库状态和启动时,用户按下home键所保存的新意图。这是做这件事的正确方法,因为当用户做同样的事情并且再次按下后退按钮时,我面临的问题是,活动堆栈中已经有可用的意图。

+0

有没有其他方法可以做到这一点。 – Sam97305421562 2009-10-24 09:31:52

+0

我也有overidden onRestoreInstanceState方法,但它被称为当用户更改orinetation.badly坚持任何帮助表示赞赏。 – Sam97305421562 2009-10-24 09:50:59

+0

这是发生在真实的设备还是仿真器? – 2009-10-26 14:51:58

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

我希望这会有所帮助。

+0

我在我的StartupActivity中设置了launchMode。我删除了它(它被设置为“singleTask”,它的行为就像我想要的;应用程序“恢复”到我期望的活动,即不是StartupActivity,但是MainActivity。 – Ted 2011-10-05 15:50:00

我已经为这个奇怪的行为奋斗了一个多月,但我终于找到了试错的解释。

这种现象,当你开始从Eclipse中的应用情况,请从命令行或如果你安装上的打开按钮(而不是完成按钮)的应用程序,并按下启动安装之后它的应用程序。

如果在这些情形之一的,你开始你的apllication,去活动1,然后到活动2,按Home键,然后按应用程序图标,它会打开活动1的新实例。不要听我的话。只需按下BACK,就可以看到当您按HOME时您离开的Activity2。

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

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

+0

这不适用于我......每当我开始应用程序,按HOME,然后再次启动应用程序,它从LAUNCHER活动开始,而不是从应该关注的活动。 – Ted 2011-10-05 15:47:22

+0

已解决。请参阅上面的注释。 – Ted 2011-10-05 15:50:24

+0

以下是此问题的解决方法:http://*.com/questions/3042420/home-key-press-behavior/4782423#4782423 – 2011-10-14 11:35:51