3

我怎样才能让我的 Android 应用程序恢复到上次的位置,即视图中的 Activity 等?如果我正在显示一个 Activity 并按下 Home 按钮,然后再次启动我的应用程序,它将返回到启动 Activity。我希望它像 iPhone 应用程序一样工作,在该应用程序中暂停并恢复到用户上次所在的位置。

谢谢你。

4

3 回答 3

5

您可能需要在清单中为您的根活动设置android:alwaysRetainTaskState ="true"。从文档中:

Activity 所在任务的状态是否将始终由系统维护——如果是,则为“true”,如果允许系统在某些情况下将任务重置为其初始状态,则为“false”。默认值为“假”。该属性仅对任务的根活动有意义;它被所有其他活动忽略。

通常,当用户从主屏幕重新选择该任务时,系统会在某些情况下清除任务(从根活动上方的堆栈中删除所有活动)。通常,如果用户在一定时间内(例如 30 分钟)没有访问任务,则会执行此操作。

但是,当此属性为“true”时,用户将始终返回到任务的最后状态,无论他们如何到达那里。这很有用,例如,在诸如 Web 浏览器之类的应用程序中,其中有很多用户不想丢失的状态(例如多个打开的选项卡)。

于 2011-05-24T18:03:55.103 回答
2

请务必在 onPause 方法中保存您想要的任何信息,并在 onResume 中检查该信息。这将使应用程序重新加载已传达的任何信息。一些小部件保持状态,但其他小部件不保持状态。

此外,当一个活动被杀死时,它的 onSaveInstanceState 方法被调用。所以任何需要存储到持久内存的东西都应该在那里完成。

于 2011-05-24T17:49:19.280 回答
2

虽然我正在使用 Mono for Android 我有一个类似的问题。

在网上研究了一段时间后,您可以设置一个要使用单例模式创建的活动。这将导致您的应用程序仅创建一个实例,并且 - 如果您返回活动 - 这将为您加载该活动的最后状态。

您可以通过使用

android:alwaysRetainTaskState="true"

 android:launchMode="singleTask" //(preffered, or "singleInstance")

特性。

Singletask 是最好的,因为 singleInstance 更适合基于单 Activity 的应用程序。

在我的情况下,设置启动模式使这个婴儿摇摆不定,但我不知道这是 Android 的 Mono 还是 Android 的根本问题..

请注意:如果您想在某个时候创建​​一个干净/新鲜/新的活动实例,您将需要创建一个初始化方法或类似的东西。

于 2012-05-23T13:03:20.210 回答