如何保存应用程序状态并再次恢复它

Posted

技术标签:

【中文标题】如何保存应用程序状态并再次恢复它【英文标题】:How To Save Appllication State And Restore It AGAIN 【发布时间】:2013-03-22 16:40:42 【问题描述】:

我使用导航控制器,我有 6 个导航控制器我希望应用程序保存状态并恢复应用程序终止的最后一个屏幕。再次启动时打开它 在任何视图中我必须使用什么代码来做到这一点。

【问题讨论】:

可能重复***.com/questions/12718341/… 【参考方案1】:

Apple 提供了执行此操作的机制:https://developer.apple.com/documentation/uikit/view_controllers/preserving_your_app_s_ui_across_launches?language=objc

链接中的重要部分:

状态保存和恢复不是自动功能,并且 应用程序必须选择加入才能使用它。应用程序表明他们支持 通过在他们的应用委托中实现以下方法来实现功能:

application:shouldSaveApplicationState:
application:shouldRestoreApplicationState:

通常,您对这些方法的实现只返回 YES 表明可以发生状态保存和恢复。然而, 想要有条件地保留和恢复其状态的应用程序可以 在不应该发生操作的情况下返回 NO。为了 例如,在发布应用更新后,您可能希望 从您的应用程序返回 NO:shouldRestoreApplicationState: 方法 如果您的应用无法有效地从以前的状态恢复状态 版本。

保留视图控制器的状态

保留应用视图控制器的状态应该是您的 主要目标。视图控制器定义用户的结构 界面。他们管理呈现该界面所需的视图,并 他们协调支持这些数据的数据的获取和设置 意见。要保留单个视图控制器的状态,您必须这样做 以下:

(必需)为视图控制器分配恢复标识符;看 “标记您的视图控制器以进行保存。” (必填)提供 在启动时创建或定位新视图控制器对象的代码; 请参阅“在启动时恢复您的视图控制器”。 (选修的) 实现 encodeRestorableStateWithCoder: 和 decodeRestorableStateWithCoder:编码和恢复任何 在后续启动期间无法重新创建的状态信息; 请参阅“对视图控制器的状态进行编码和解码”。

除了应用的视图控制器保存的数据和 视图,UIKit 提供了钩子让你保存任何杂项数据 您的应用程序需要。具体来说,UIApplicationDelegate 协议 包括以下方法供您覆盖:

application:willEncodeRestorableStateWithCoder:
application:didDecodeRestorableStateWithCoder:

【讨论】:

亲爱的:我看到了文档和很多材料,但没有成功,请通知我如何做到这一点 在你的答案中包含一些信息而不仅仅是一个链接通常很好,这样如果链接断开(并且它会断开),仍然有一些帮助。 我刚刚修复了链接:)

以上是关于如何保存应用程序状态并再次恢复它的主要内容,如果未能解决你的问题,请参考以下文章

保存和恢复 uinavigationcontroller 的状态

如何保存和恢复作为音频单元主机的音频单元状态

保存程序的状态以允许它恢复[重复]

如何在 Android Lollipop 中保存 WebView 状态并恢复它?

如何在 Android Lollipop 中保存 WebView 状态并恢复它?

在Fragments中保存和恢复ListView(livedata)