1

我的应用程序使用 NSUserDefaults 来存储一些值,以便它可以在应用程序更新或后台退出时恢复它们。后台自动保存我的整数值,但如果用户从启动器退出应用程序,数字也会丢失,并且我猜在进入后台时不会调用 ViewDidUnload 方法。有没有一种方法可以在应用程序卸载时保存 NSUserDefaults。此外,ViewDidLoad 方法也有同样的问题,它不会从后台调用。有什么办法解决这个问题?

PS 到目前为止,我的应用程序需要保存的唯一数据是用于屏幕计数的 int。

更新: UIApplicationDidEnterBackgroundingNotification 非常适合您的建议!

4

2 回答 2

1

您无法在数据最终被杀死之前立即保存数据,但您可以在applicationDidEnterBackground:应用委托中保存“以防万一”状态。

还有 applicationDidBecomeActive:,但是没有理由从那里加载你的保存数据,因为当它从后台的应用程序调用时,数据将以任何方式保存。

于 2010-07-14T06:03:52.557 回答
1

您无法判断您的应用程序是否是从后台启动的,至少它当前是如何设置的,因为如果您的应用程序委托是从跳板启动的,它将获得相同的事件序列。

正如 Joost 所说,您应该在 applicationDidEnterBackground 回调中保存恢复状态所需的任何内容;本质上,您应该假设这是您的应用程序在被邪恶的进程收割者无情地杀死之前收到的最后一条消息。

您应该查看WWDC 2010 会议视频,特别是 Session 105 - 在 iPhone OS 上采用多任务处理,第 1 部分以获得详尽的解释。

于 2010-07-14T06:14:06.313 回答