【发布时间】:2011-08-01 20:02:09
【问题描述】:
我有一个应用程序,它有一个初始活动(A - 也是启动器中指定的那个),它允许用户从中启动另一个活动 (B)。我正在保存 Activity B 的状态(onSaveInstanceState() 并在 onCreate() 中恢复它)。
在某些手机(目前为 N1 和 Motrola Milestone,但不是 Galaxy S)上,如果用户在启动 B 后按下主页按钮(即应用程序进入后台),然后立即重新启动应用程序,则会显示活动A 再次(不是 B)。但是,如果他们从“最近”应用程序(长按主页按钮)启动它,他们将被带到活动 B。
根据我对 Android 文档的了解,除非任务已被终止(这里似乎不是这种情况,因为除了从应用程序屏幕重新启动活动之外没有其他操作),我们应该看到活动 B 在启动时恢复(因为那是在堆栈的顶部)。所以我似乎无法弄清楚这里到底出了什么问题。
顺便说一句,在应用程序使用期间方向更改工作正常(一切都保存和恢复正常)。这个奇怪的问题已经困扰我一段时间了,通过反复试验,我发现当我禁用该活动的方向,然后尝试重新启动时,B 会按预期显示。
那么有没有其他人遇到过类似的情况,如果有,该如何解决?
我正在考虑将正在运行的活动保存在 SharedPreferences 中(如 in this post 所述),然后他们从活动 A 中恢复它,但是想知道我是否在这里遗漏了一些东西。 B restored on re-launch 不应该是默认行为吗?
【问题讨论】:
-
顺便说一句,刚刚确认 Android 示例应用程序也存在这种行为。尝试了 Photostream 应用程序 (developer.android.com/resources/articles/…) 和 ContactManager (developer.android.com/resources/samples/ContactManager/…)。两者都显示相同的问题。
-
好吧,您可以随时查看如何开始您的活动。从您提供的文档中,您可以更多地查看activity attribute,尤其是
android:alwaysRetainTaskState和android:clearTaskOnLaunch。无论如何,在使用图标/快捷方式重新启动时从主要活动开始是 预期的默认行为。 -
也许你看到了这个 Android 错误:stackoverflow.com/questions/11296203/…