IOS:如何恢复应用程序状态

标签 ios state restore

我正在尝试实现保存和恢复应用程序状态。我收集到 应用程序委托(delegate) shouldSaveApplicationState: 中的方法保存状态并为 View Controller 提供设置恢复 ID, application:shouldRestoreApplicationState: 应该会在应用程序恢复事件状态时将您带回到您所在的 View Controller 。

但是,如果我故意使用主页按钮关闭应用程序——例如,调用电话或在 safari 上查看某些内容——当我返回应用程序时,它会在一瞬间显示我去过的地方但随后从初始 View Controller 重新启动。

这对用户来说是不和谐的,而且绝对不是最佳选择,因为用户需要不厌其烦地回到他/她所在的地方。

当我将 application:shouldRestoreApplicationState: 设置为在触发时注销时,在这种情况下它似乎没有被触发——显然是设计使然 question州。

有没有办法强制调用此方法以检索我的状态?或者,在您主动离开应用程序而不是让它被打断(例如,被来电)的情况下,您如何返回到您在应用程序中的位置?

感谢您的任何建议。

最佳答案

事实证明这是我的错误。方法 application:shouldRestoreApplicationState: 在按下主页按钮后没有在恢复时触发的原因是 appDelegate 文件中的一个方法称为 applicationDidBecomeActive:(UIApplication * )application 在生命周期的早期触发,并将应用程序重定向到启动页面。我通过将 applicationDidBecomeActive 中麻烦的重定向移动到生命周期中 restore 方法之后的 applicationDidFInishLaunching 来解决这个问题。这允许 shouldRestoreApplicationState 触发。

请注意,按下主页按钮并不是强制退出,而是触发 restore 方法的一个异常(exception)。

关于IOS:如何恢复应用程序状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39335237/

相关文章:

android - 除了启动我的应用程序之外,我能否使用 NFC 标签执行更多操作?

Docker Compose/无效,因为

c++ - 动态_cast : should be replaced in this case

flutter - 从外部小部件触发小部件动画

SwiftUI View Builder 参数无法更改状态

Linux服务器: Restore backup files in new directory

linux - -t 选项不能在 iptables-restore 中使用

ios - 集成到 UIKit 应用程序时来自 Cocos2d 的 TextureCache 错误

ios - 从 Interface Builder 设置自定义 UINavigationBar 类

ios - 在 UITextView 上点击时不调用 UICollectionView didSelectItemAtIndexPath