【问题标题】:Save activity state in android when home button pressed按下主页按钮时在android中保存活动状态
【发布时间】:2009-10-24 09:27:59
【问题描述】:

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

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

【问题讨论】:

  • 有没有其他方法可以做到这一点。
  • 我也重写了 onRestoreInstanceState 方法,但是当用户更改 orinetation 时会调用它。非常感谢任何帮助。
  • 这是发生在真机还是模拟器上?
  • 通过eclipse运行时发生在设备上。

标签: java android android-activity


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 这对我不起作用...每当我启动应用程序时,按 HOME,然后再次启动应用程序,它会从 LAUNCHER 活动开始,而不是从应该关注的活动开始。
  • 这里有一个解决这个问题的方法:stackoverflow.com/questions/3042420/home-key-press-behaviour/…
  • 太棒了!正是我的情况
【解决方案2】:

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

我希望这会有所帮助。

【讨论】:

  • 我在 StartupActivity 中设置了启动模式。然后我删除了它(它被设置为“singleTask”,它的行为就像我想要的那样;应用程序“恢复”到我期望的 Activity,即不是 StartupActivity 而是 MainActivity。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多