如何将我的Android应用恢复到最后的位置,即视图中的活动等?如果我正在显示活动并按下主页按钮,然后再次启动我的应用程序,则返回启动活动。我希望它像iPhone应用程序一样工作,它可以暂停到原地,然后恢复到用户最后的位置。
谢谢。
答案 0 :(得分:5)
您可能需要为清单中的根活动设置android:alwaysRetainTaskState =“true”。来自文档:
是否处于任务状态 活动所在的将永远是 由系统维护 - 如果是“真实” 如果是系统,它将是“假” 允许将任务重置为其 在某些情况下的初始状态。 默认值为“false”。这个 属性仅对于有意义 任务的根活动;它被忽略了 所有其他活动。
通常, 系统清除任务(删除所有 来自堆栈上方的活动 在某些情况下的根活动 当用户重新选择该任务时 从主屏幕。通常,这 如果用户没有访问过,则完成 任务一段时间, 比如30分钟。
然而,当这个 属性为“true”,用户将永远 返回上一个状态的任务, 无论他们如何到达那里。这个 很有用,例如,在 应用程序像Web浏览器在哪里 有很多州(如 用户可以使用多个打开的选项卡 不喜欢失去。
答案 1 :(得分:2)
请务必在onPause方法中保存所需的任何信息,并在onResume中检查该信息。这将让应用重新加载任何已传达的信息。一些小部件保持状态,但其他小部件不保持状态。
此外,当一个活动被杀死时,它会调用onSaveInstanceState方法。因此,任何需要存储到持久性内存的东西都应该在那里完成。
答案 2 :(得分:2)
虽然我正在使用Mono for Android,但我遇到了类似的问题。
经过一段时间在网上研究后,您可以使用单例模式设置要创建的活动。这将导致您的应用只创建一个实例 - 如果您返回活动 - 这将为您加载该活动的最后一个状态。
您可以通过使用
配置活动来完成此操作 android:alwaysRetainTaskState="true"
和
android:launchMode="singleTask" //(preffered, or "singleInstance")
性质。
Singletask是最好的,因为singleInstance更适合基于单活动的应用程序。
在我的情况下设置启动模式使我的摇滚乐如我所愿,但我不知道这是根据Android的Android或Android问题的Mono ..
请注意:如果您想在某个时刻创建活动的干净/新鲜/新实例,则需要创建初始化方法或类似的东西。