问题标签 [state-restoration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
70 浏览

ios - 为已构建的应用程序实施状态恢复

我想要一些关于如何正确地为已经构建的应用程序实现状态保存和恢复的建议,它有很多视图控制器和复杂的层次结构。

尝试为已经运行了一段时间的应用程序保留状态时要记住哪些事项?

编辑:

我想澄清或可能解决我在恢复状态方面面临的问题。我在启动时成功恢复了应用程序的状态。我在层次结构中恢复视图控制器和其他视图控制器。现在,当我将另一个视图控制器和其他视图控制器序列推送到导航时。堆栈,在特定的视图控制器,由于某种原因,应用程序由于异常而崩溃。因此,当我重新打开应用程序时,它仍然会恢复按主页按钮时保留的第一个视图控制器的状态。

具体来说,我想知道是否有任何方法可以丢弃应用程序状态信息。当应用程序由于未捕获的异常而终止时?我知道如果用户手动强制终止应用程序,或者状态恢复失败,或者应用程序在启动时终止,状态将被丢弃。有没有办法捕获终止并相应地配置应用程序状态?建议会很棒。谢谢。

0 投票
0 回答
56 浏览

ios - 有什么方法可以在 iOS 中手动丢弃应用程序的保存状态?

我想澄清或可能解决我在恢复状态方面面临的问题。我在启动时成功恢复了应用程序的状态。当我按下主页按钮时,我恢复了保存到磁盘的层次结构中的视图控制器和其他视图控制器。现在,当我将另一个视图控制器和其他视图控制器序列推送到导航时。堆栈,在特定的视图控制器,由于某种原因,应用程序由于异常而崩溃。因此,当我重新打开应用程序时,它仍然会恢复按主页按钮时保留的第一个视图控制器的状态。

具体来说,我想知道是否有任何方法可以丢弃应用程序状态信息。当应用程序由于未捕获的异常而终止时?我知道如果用户手动强制终止应用程序,或者状态恢复失败,或者应用程序在启动时终止,状态将被丢弃。有没有办法在终止发生时捕获它,并相应地配置应用程序状态?建议会很棒。谢谢。

0 投票
1 回答
644 浏览

macos - NSViewControllers 和 NSViews 没有得到恢复 API 调用

在 Apple 的文档中,他们说在基于文档的应用程序的情况下,您应该对 NSApplication、NSWindow、NSWindowController 以及整个响应程序链(此处)进行恢复调用(restoreStateWithCoder: 和 encodeRestorableStateWithCoder:)。

我想实现这一点,但我只在 NSWindowController/NSDocument 子类中获得恢复调用,而不是 NSViews 或 NSViewControllers。

我创建了一个新的基于文档的应用程序来测试这个(这里),但我只在 NSDocument 子类中得到恢复调用,而不是在 NSViewController 或 NSView 中。

来自测试项目的代码:

NSDocument 子类(修复工程):

NSViewController 子类(恢复不起作用):

NSView 子类(恢复不起作用):

0 投票
0 回答
39 浏览

ios - 如何擦除 NSCoder 数据,使其在下次 App 启动时不可用?

对于 iOS 应用程序,我不希望该应用程序在用户注销后使用某些恢复数据。理想情况下,我想在用户注销时擦除数据。

将此添加到标准encodeRestorableState()/decodeRestorableState()处理的模式是什么?

0 投票
2 回答
74 浏览

ios - BLE 恢复/保存意外效果

我已经实现了恢复功能CoreBluetooth并且它工作正常,除了一件事 - 在后台一周后(+/- - 不确定 100%),没有打开,应用程序终止并且不再在任何基于 BLE 的事件上恢复(经过测试几次)。

我还将日志记录添加到所有与 BLE 相关的任务中,添加用于捕获崩溃的分析,额外跟踪恢复过程/事件 - 在检查此日志/信息/报告后 - 没有发现任何异常或可以终止我的应用程序的东西。

问题是 - 有人可以解释我为什么会出现这种行为吗?

0 投票
1 回答
203 浏览

ios - 无法识别的选择器发送到类(单例)

我在这个问题上找到了一些相关主题,但我不明白那里提出的解决方案如何适用于单例类。

当我的应用程序启动时,我打电话gamestate.shardInstance()applicationDidBecomeActive每次都会立即崩溃并出现相同的错误:

2017-03-22 11:09:09.102 project-mars[46108:28079112] +[project_mars.gameState encodeWithCoder:]: unrecognized selector sent to class 0x103670e60 2017-03-22 11:09:09.107 project-mars[46108:28079112] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[project_mars.gameState encodeWithCoder:]: unrecognized selector sent to class 0x103670e60'

有人可以帮我理解这个错误到底发生了什么以及如何解决它吗?谢谢!

0 投票
0 回答
87 浏览

ios - 如何从 viewController 恢复 coreBluetooth 状态?

我正在尝试从实现核心蓝牙的 viewController 恢复状态。我正在尝试在这个问题中发布的恢复:coreBluetooth question,但这被添加到 appDelegate 而不是 viewController 中。

因此,在 didFInishLaunching 中添加的代码调用了 coreBluetooth 管理器……

我需要在哪里实现此代码?在我的 ViewController 的哪个功能中?

0 投票
2 回答
87 浏览

ios - 恢复应用程序状态时显示不确定的活动指示器?

我的应用程序中有应用程序状态保存和恢复工作。恢复是相当 CPU 密集型的,在支持的最旧设备上,恢复应用程序状态可能需要 5 秒,所以我想在恢复应用程序状态时显示一个活动指示器。

在正在恢复的视图控制器中,我尝试过:

我还尝试将其添加到UIWindowApp Delegate 中:

但在这两种情况下,都没有显示活动指示器。我猜该应用程序在恢复时不会更新其视图状态。

有没有人在恢复应用程序状态时设法显示活动指示器,如果是这样怎么办?

0 投票
0 回答
439 浏览

ios - 状态恢复崩溃报告(decodeObject?)

我从 XCode 获得了这些崩溃报告(我在底部粘贴了一份),但我无法重现错误或找出问题所在。

从回溯中我认为它可能与这些东西有关......我确实对新功能和功能decodeObject有一些问题,所以为了确保我做了一个 NSCoder 扩展:decodeBooldecodeDouble

现在我只safeDecode在我的代码中使用这些函数,但我仍然得到同样的崩溃报告。

回溯中的第三项说[UIStoryboard storyboardWithName:bundle:],但我不知道这与任何事情有什么关系。此外,每个崩溃报告都有关于状态恢复的内容decodeObject,所以我认为问题不在于情节提要实例化本身。

同时,当我在模拟器或设备上测试状态恢复时,我从来没有遇到任何问题,所以显然它只发生在某些人身上。

关于这里可能发生什么的任何想法?



编辑:这里出现了一份不同的崩溃报告,表明状态恢复确实存在问题。不过,我永远无法自己复制它。:/

0 投票
0 回答
267 浏览

ios - 如何自动重新连接在我的 iOS 应用程序上连接的蓝牙钥匙串,然后重新启动我的 iPhone?

我有一个实现 coreBluetooth 框架以连接蓝牙钥匙串的目标 c 应用程序。一切都是正确的,我用蓝牙钥匙串连接,如果我去后台我的设备保持连接。如果我的设备断电或丢失,则重新连接。我的应用程序会检测我何时单击带有服务和 didUpdateValueForCharacteristic 的按钮蓝牙钥匙串。所以这一切都是正确的。

但是我正在尝试将恢复属性与 willRestoreState 函数一起使用,但这不起作用......我将我的应用程序发送到后台,但是当我重新启动我的 iPhone 时,这不会重新连接并且不起作用 didUpdateValueForCharacteristic。

我已将 centralManager 和所有功能蓝牙委托添加到 AppDelegate 以及恢复应用程序的功能,并且我使用自定义队列来连接 centralManager 蓝牙。但我不知道是什么问题,为什么不重新连接然后重新启动。

}

当 iPhone 自动重启而不需要打开应用程序时,如何重新连接?我究竟做错了什么?