【问题标题】:save state when phone turned off手机关机时保存状态
【发布时间】:2016-10-10 00:27:56
【问题描述】:

我创建了一个 saveState() 方法,它使用 UserDefaults 在我的应用程序的某些部分保存某些设置。当我退出应用程序并返回时它工作正常,但如果我真的关闭我的(iOS)手机,当我再次启动应用程序时,设置不会保存。除了在代码中调用 saveState() 方法的那些地方,我还在三个 AppDelegate 函数中调用了 saveState():applicationWillResignActive、applicationDidEnterBackground 和 applicationWillTerminate。我在 viewDidLoad 中有一个 loadState() 函数,因此任何保存的信息都会在那时加载。有谁知道我没有做什么:手机关机时保存/恢复设置?

【问题讨论】:

  • 而不是依赖特定事件来触发保存(并且没有事件让您的应用知道手机正在关闭),您应该在数据发生变化时保存数据,然后它不会不管发生什么
  • 感谢 Paulw11!所以,我想你是说如果我在我的应用程序的特定(更改)点使用 Userdefaults,那么我不需要在 AppDelegate 中额外保存状态——它已经完成了。对吗?
  • 没错。节省没有真正的成本,因此您可以在更改数据时随时这样做

标签: ios appdelegate savestate


【解决方案1】:

iphone关机时,AppDelegate的applicationWillTerminate

函数在应用程序即将终止时调用

在调用 saveState() 之后使用 synchronize() 怎么样

在苹果 API https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize

将对持久域的任何修改写入磁盘并将所有未修改的持久域更新到磁盘上的内容。

【讨论】:

  • applicationWillTerminate 可能不会被调用。 OP 声明他们已经实现了这个功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
相关资源
最近更新 更多