繁体   English   中英

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

[英]Save activity state in android when home button pressed

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

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

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

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

如果在上述情况之一中,您开始进行合并,请转到Activity1,然后转到Activity 2,按HOME按钮,然后按应用程序图标,它将打开一个Activity1的新实例。 不要相信我。 只需按BACK,即可看到按HOME时离开的Activity2。

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

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

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

我希望这将有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM